Fasáda na lasercut domečky

Dnes Vám představuji návod jak vytvořit fasádu na domečky. Tuto metodu používáme na všechny domečky ze stavebnic budov typu Laser Cut - laserové výpalky. Nechá se však použít i na plasty.

Potřebujeme:
Lepidlo na polystyrem
(my používáme toto)




Herkules - lepidlo
Voda

Poměry:
Lepidlo na polystyren 10 : 1 Herkules lepidlo (Herkules se nemusí použít, ale pokud jej přidáte, lépe se s kaší pracuje)
Vodou doředíme do požadované konzistence kaše.

Směs rozetřeme do kaše. Štětcem nanášíme na zdi modelu. Po zaschnutí dle potřeby opakujeme.

Po zaschnutí můžeme použít klasické tonovací barvy JUPOL na omítky pro tónování a dobarvení zdí do požadované barvy.

Ukázka fasád:












Arduino 11, ovládání točny - krokový motor

Použité komponenty:
1 x Arduino Pro Uno (Nano)
1 x IR (infrared) modul 
1 x odpor 10k pro spínače
4 x spínač (vypínač)
1 x driver pro krokový motor s IO LN2003
1 x krokový motor bipolární - 5V


Program:

Stav klidu - nic se neděje
Ver. 1
Sepnutí spínače A (1) - motor se točí do jednoho směru plnou rychlostí
Sepnutí spínače B (2) - motor se točí do druhého směru plnou rychlostí
Sepnutí spínače C (3) - motor se točí do jednoho směru poloviční rychlostí
Sepnutí spínače D (4) - motor se točí do druhého směru poloviční rychlostí
(Rychlosti je možné individuálně nastavit)

Ver. 2
Sepnutí spínače A (1) nebo B (2) - motor se točí v daném směru do místa polohy IR snímače, kde zastaví
Sepnutí spínače C (3) - motor se točí do jednoho směru poloviční rychlostí - ignoruje IR snímač
Sepnutí spínače D (4) - motor se točí do druhého směru poloviční rychlostí - ignoruje IR snímač
(Rychlosti je možné individuálně nastavit)

Ver. 3 a dále se připravuje - V plánu je kompletní ovládání točny s možností tlačítkové volby výjezdové koleje točny a směru otočení. Vylepšení a zpřesnění snímače polohy. (Non-stop točení bude zachováno jako bonus navíc pro předvádění). 

Instalaci do točny časem doplním.

Funkce viz. video:
Ver.1

Ver.2

Program:
int button_1 = 1;
int button_2 = 2;
int button_3 = 3;
int button_4 = 4;
int motorPin1 = 8;          
int motorPin2 = 9;
int motorPin3 = 10;
int motorPin4 = 11;

int motor_Speed1 = 1;
int motor_Speed2 = 8;


  void setup() {
  pinMode(button_1, INPUT);
  pinMode(button_2, INPUT);
  pinMode(button_3, INPUT);
  pinMode(button_4, INPUT);
  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);
  pinMode(motorPin3, OUTPUT);
  pinMode(motorPin4, OUTPUT);
}

void loop() {
  
{
  if (digitalRead(button_1) == HIGH)
  {
  digitalWrite(motorPin1, HIGH);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(motor_Speed1);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, HIGH);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(motor_Speed1);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, HIGH);
  digitalWrite(motorPin4, LOW);
  delay(motor_Speed1);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, HIGH);
  delay(motor_Speed1);
  }
  if (digitalRead(button_2) == HIGH)
  {
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, HIGH);
  delay(motor_Speed1);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, HIGH);
  digitalWrite(motorPin4, LOW);
  delay(motor_Speed1);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, HIGH);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(motor_Speed1);
  digitalWrite(motorPin1, HIGH);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(motor_Speed1);
  }
   if (digitalRead(button_3) == HIGH)
  {
  digitalWrite(motorPin1, HIGH);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(motor_Speed2);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, HIGH);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(motor_Speed2);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, HIGH);
  digitalWrite(motorPin4, LOW);
  delay(motor_Speed2);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, HIGH);
  delay(motor_Speed2);
  }
   if (digitalRead(button_4) == HIGH)
  {
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, HIGH);
  delay(motor_Speed2);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, HIGH);
  digitalWrite(motorPin4, LOW);
  delay(motor_Speed2);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, HIGH);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(motor_Speed2);
  digitalWrite(motorPin1, HIGH);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(motor_Speed2);
  }
}
}



Arduino 10, Imitace plapolajícího ohně - světelný efekt

Obvod sepne LED, který náhodnou funkcí kmitá po určitý čas a pak vypne. Funkcí delay (čekej) počkáme do dalšího cyklu.

Použité komponenty:
1 x Arduino Pro Mini (Nano) - Aliexpress (cca 35 CZK klon)
1 x odpor 680R pro LED
1 x LED dioda červená



Funkce - led dioda poblikává a tak navozuje dojem plápolajícího ohně

Foto po instalaci do modelu:

Program:
int LED_Pin = 3;   //nasatvení výstupu - defaultně na pin 3
int howBright;   

void setup()

  pinMode(LED_Pin, OUTPUT); 
}

void loop() 

  howBright = random(128,255);   // nasatvení sílí svitu blikání min. 0 a max. je 255
  analogWrite(LED_Pin, howBright); 
  delay(random(50,150));         // prodleva mezi blikáním, při nastavení hodnoty vyšší jak 150 dochází již k přerušování ohně
}





Arduino 9, fotograf na kolejiště (LED)

Použité komponenty:
1 x Arduino Pro Mini (Nano) - Aliexpress (cca 35 CZK klon)
1 x IR (infrared) modul 
1 x odpor 680R pro LED
1 x LED dioda bílá (pro instalaci do postavičky SMD led dioda)

Program:
Stav klidu - nic se neděje
Funkce - při sepnutí opto-infra snímače proběhne cyklus zablikání led (motiv focení) - následuje blokování sepnutí (čas blokovaní lze nastavit v programu).

Instalace opto snímače lze provést do kolejového svršku mezi koleje. Opto snímač umísťujte do záběrného pole fotografa.

Instalaci do figurky doplním časem.

Funkce viz. video:

Program:
int ledPin = 8;     // výstup pro led pin 8
int irApin = 3;     // vstup pro IR pin 3
byte leds = 0;

void setup() 
{
  pinMode(ledPin, OUTPUT);
  pinMode(irApin, INPUT);  
}

void loop() 
{
  if (digitalRead(irApin) == LOW)
  {
    digitalWrite(ledPin, HIGH);
    delay(2); 
    digitalWrite(ledPin, LOW);
    delay(200); 
    digitalWrite(ledPin, HIGH);
    delay(2); 
    digitalWrite(ledPin, LOW);
    delay(50); 
    digitalWrite(ledPin, HIGH);
    delay(50); 
    digitalWrite(ledPin, LOW);
    delay(6000);        // hodnota blokování - 6000 = 6 sekund (max 20 sekund "20000")
  }
}


Arduino 8, IR spínač pro přejezdové zařízení

Použité komponenty:
1 x Arduino Pro Mini (Nano) - Aliexpress (cca 35 CZK klon)
4 x IR (infrared) modul 
1 x odpor 680R pro LED
1 x LED dioda (místo led pak spínací prvek, např. 5V relé)


Program:

Stav klidu - nic se neděje
1 funkce z leva - vlak sepne A (nic se nestane) dále sepne B (spustí se výstražníky) -> projede sledovaným úsekem a následně sepne C (nic se nestane) a sepne D (vypne výstražníky)
2 funkce z prava - vlak sepne D (nic se nestane) dále sepne C (spustí se výstražníky) -> projede sledovaným úsekem a následně sepne B (nic se nestane) a sepne A (vypne výstražníky)
3 funkce při posunu (z leva) - vlak sepne A (nic se nestane) dále sepne B (spustí se výstražníky) -> neprojede celým sledovaným úsekem a následně se vrací a sepne B (nic se nestane) a sepne A (vypne výstražníky) - totáž platí při vjezdu z pravé strany do D a C
Poznámka - vlak může zastavit i v poloze kteréhokoli čidla, v tom momentě se zaznamenává pouze poslední funkce a při sepnutí dvou čidel zároveň má přednost to čislo první sepnuté.

Z důvodu posunu jsou použita 4 čidla, která hlídá železniční přejezd v obou směrech vždy pro vjezd a tak i výjezd. Díky tomuto je možný 100% posun s automatickým ovládáním přejezdových výstražníků.

Funkce viz. video (led indikuje sepnutí přejezdového zařízení):


Program:
int ledPin = 8;
int irApin = 3;  //vypínací
int irBpin = 2;  //spínací
int irCpin = 4;  //spínací
int irDpin = 5;  //vypínací

byte leds = 0;

void setup() 
{
  pinMode(ledPin, OUTPUT);
  pinMode(irApin, INPUT);  
  pinMode(irBpin, INPUT);  
  pinMode(irCpin, INPUT);  
  pinMode(irDpin, INPUT); 
}

void loop() 
{
  if (digitalRead(irApin) == LOW)
  {
    digitalWrite(ledPin, HIGH);
  }
  if (digitalRead(irBpin) == LOW)
  {
    digitalWrite(ledPin, LOW);
  }
  if (digitalRead(irCpin) == LOW)
  { 
    digitalWrite(ledPin, HIGH);
  }  
  if (digitalRead(irDpin) == LOW)
  {
    digitalWrite(ledPin, LOW);
  }
}


Arduino 7, Staniční rozhlas (zvukový modul)

Dnes si popíšeme zapojení zvukového MP3 modulu možnéh využít ke staničnímu hlášení, ozvučení scény kolejiště a nebo třeba jako jednoduchý přehrávač MP3.

Použité komponenty:
1 x Arduino Pro Mini (Nano) - Aliexpress (cca 35 CZK klon)
1 x DFPlayer MP3 (Mp3-TF-16P) - AliExpress (cca 30 CZK verze mp3-tf-16p)
10 x spínač dle vaší volby
11 x odpor 10 k pro spínač a RX
1 x microSD paměťová karta - formát FAT32
1 x repro 3 W 4 ohmy


Program:

Program verze 1.1
Stav klidu - nic nehraje
Stav sepnutí - sepnutí T1 sepne mp3 z SD karty a nechá daný zvuk celý přehrát (shodné pro další T1 až T10)
Upozornění - pokud se přehrává zvuk a zmačknete stejné, či jiné talčítko T1 až T10 spustí se nový zvuk a původní přehrávaný se přeruší.

microSD karta - do kořenového adresáře nahrajte zvuk s názvem:
1.mp3 - spouští tlačítko T1
2.mp3 - spouští tlačítko T2 
atd.....
...
... až
10.mp3 - spouští tlačítko T10

Zařízení nemusí být využíváno jako rozhlas, ale jde použít jako zvukový modul pro podkreslení krajiny kolejiště, či dalšímu nazvučení figurek, vozidel, dílen apod.

Funkce viz. video:

Program:
#include <Servo.h>
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SoftwareSerial mySoftwareSerial(2, 3); // RX, TX - data mezi MPR a Arduino
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);
const int button0 = 4;     //nastavení funkčních tlačítek
const int button1 = 5;
const int button2 = 6; 
const int button3 = 7; 
const int button4 = 8; 
const int button5 = 9;   
const int button6 = 10;
const int button7 = 11;
const int button8 = 12;
const int button9 = 13;
int buttonState = 0; 
int pos = 0;
int value = 0;
       
void setup() {
  pinMode(button1, INPUT);     
 mySoftwareSerial.begin(9600);
  Serial.begin(9600);
  
  Serial.println();
  Serial.println(F("DFRobot DFPlayer Mini Demo"));
  Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));
  
  if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with mp3.
    Serial.println(F("Unable to begin:"));
    Serial.println(F("1.Please recheck the connection!"));
    Serial.println(F("2.Please insert the SD card!"));
    while(true);
  }
  Serial.println(F("DFPlayer Mini online."));
  
  myDFPlayer.volume(25);  //Nastavení hlasitosti minimální 0 až maximální 30
}

void loop() {
  buttonState = digitalRead(button0);   //tlačítko 0 sepne 1.mp3 atd u dalších
  if (buttonState == HIGH) {
  myDFPlayer.play(1);  //Play the 1.mp3
    delay(10);
  } else {
  }
    buttonState = digitalRead(button1);
  if (buttonState == HIGH) {
  myDFPlayer.play(2);  //Play the 2.mp3
    delay(10);
  } else {
  }
    buttonState = digitalRead(button2);
  if (buttonState == HIGH) {
  myDFPlayer.play(3);  //Play the 3.mp3
    delay(10);
  } else {
  }
    buttonState = digitalRead(button3);
  if (buttonState == HIGH) {
  myDFPlayer.play(4);  //Play the 4.mp3
    delay(10);
  } else {
  }
      buttonState = digitalRead(button4);
  if (buttonState == HIGH) {
  myDFPlayer.play(5);  //Play the 5.mp3
    delay(10);
  } else {
  }
      buttonState = digitalRead(button5);
  if (buttonState == HIGH) {
  myDFPlayer.play(6);  //Play the 6.mp3
    delay(10);
  } else {
  }
      buttonState = digitalRead(button6);
  if (buttonState == HIGH) {
  myDFPlayer.play(7);  //Play the 7.mp3
    delay(10);
  } else {
  }
      buttonState = digitalRead(button7);
  if (buttonState == HIGH) {
  myDFPlayer.play(8);  //Play the 8.mp3
    delay(10);
  } else {
  }
      buttonState = digitalRead(button8);
  if (buttonState == HIGH) {
  myDFPlayer.play(9);  //Play the 9.mp3
    delay(10);
  } else {
  }
      buttonState = digitalRead(button9);
  if (buttonState == HIGH) {
  myDFPlayer.play(10);  //Play the 10.mp3
    delay(10);
  } else {
  }
}


721. MTB - zvuk Artol - reproduktor z Aliexpressu

I do našeho vozového parku jsme zařadili jeden motorový model od firmy MTB model - tímto modelem je asi nejpovedenější model z celé produkce firmy a to 721.156-8. 
Model po nákupu měl bohužel tři mouchy: 
První mouchou je motor horší konstrukce, ale po jeho dosloužení se nechá nahradit motorem 5-ti pólovým s uhlíky. Zatím slouží originál a po jeho odchodu tuto remotorizaci provedeme.
721. foto s původním zábradlím
Druhá moucha je ve vzhledu a to zábradlí ochozu, které vlivem použití špatného plastu je poloprůhledné. Jde lehce sundat a tak nebyl problém zábradlí nastříkat bílou barvou. Třetí moucha je ve zvuku. MTB do modelu montuje kruhové reproduktory o výkonu 1,5W a po připojení dekoderu Zimo MX645P22 se bohužel linuly zvuky podobné tekoucímu vodovodu. Reproduktor jde lehce odpájet ze základní desky modelu. Dále ve spodní části rámu/nádrže jsme vybrousili minibruskou dorazy pro kruhový reproduktor, tak aby se sem vešel reproduktor Zimo 10x15. 
Ozvučnice Roco
Tyto reproduktory se však nechají sehnat na Aliexpressu za mnohonásobně nižší cenu, jelikož se jedná o reproduktory používané do mobilních telefonů a tak není potřeba za ně platit více na českém trhu. Ozvučnice jde vyrobit z jakéhokoliv plastu, tak aby objemový prostor ozvučnice byl cca 9 x 14 x 3 až 5 mm. Takto upravený model má mnohem lepší zvukové vlastnosti jak originální osazení. Já mám použitou ozvučnici z modelu Roco - 10 x 15, která se přesně vejde pod spodní víčko původního reproduktoru.
Zvukový projekt je použit Artol - je to proto, že všechny modely máme ozvučeny zvuky Jacek a tak jsem chtěl vyzkoušet i jiného výrobce zvuků. Dneska Vím, že Artol není špatný zvuk pro model za super cenu, ale pokud chcete kvalitu, vyplatí se připlatit za JBR Jacek.
Výsledek si můžete poslechnout zde:


Řada 230. Laminátka od Atlas (China) s pojezdem Roco


Neodolal jsem a na čínském e-shopu si koupil maketu Laminátky od firmy Atlas. Model je na cenu docela povedený a tak nedalo ani moc práce jej zprovoznit. Celou maketu jsem rozložil na původní rám a podvozky odložil bokem. Z celého spodku jsem použil jen skříně a masky. 
Původní masky z podvozků jsem odřízl těsně za maskou a nalepil na stejné tři body v uchycení nových podvozků. Použitý pojezd je Roco BR218 (start set) s novým soukolím 1 x ROCO 139812 Radsatz m.2Haftringen+Zahnrad (bandážované) a 3 x ROCO 139811 Radsatz m. Zahnrad o. Haftring (nebandážované) pro lokomotivu ÖBB 1046 - jen je potřeba ozubené lokečko posunout na soukolí asi o 0,5 mm dle dispozice skříně podvozku BR218.
Zapojení dekoderu je jen provizorní, zkušební/testovací dekoder s piny, které si mohu zastrčit do pluxe i PINů :D Jelikož BR218 má delší rozvor podvozků, je potřeba rám zkrátit. Řez rámu je vidět v levé části loko mezi převodovou skříní a motorem. Na levé fotce je vidět řez v levé části. Vyříznul jsem přesně 9 mm rámu v místě kde není setrvačník a v této části i zkrátil kardanku o 9 mm (radši si doměřte dle kastle kolik potřebujete odříznout, tak aby seděla na podvozky. Kastle jen sedí na modelu bez zámků, či šroubku. Celý rám je pak z obou bočních stran obroušen o cca 2 mm, aby se vešel do kastle od Atlasu. Rám slepen vteřinovým lepidlem a spasován silou k sobě. Na každé straně je na čele rámu od vrchu ubroušeno, tak aby zapadl pod stanoviště kastle. Stanoviště na kastli mají odstraněnou podlahu z důvodu nedostatku místa a následně se i nechalo vsadit osvětlení.
Pantografy PIKO - sundal jsem původní pantografy /plast/, včetně izolátorů. Izolátory mají díru, do ní vtavil proužek leptového plíšku jako příčník vždy mezi dva izolátory a na tento plech přiletoval pantografy PIKO - následně natřel lehce na žluto. Doplňky na spodu skříně odlepil z původního rámu, trochu zakrátil, aby podvozky nedrhly a nalepil na kovový rám ze spodu - nutno vypodložkovat, rám je více utopen v kastli. Do předních částí budu ještě vlepovat vzduchojemy mezi pluh a podvozek, jelikož ty na modelu Atlas nejsou a mají tam být. Dále se musí vyndat boční okna a odříznout držící plexy pod okny - okna následně zpátky vlepit, jinak vadí v nasazení rámu. Jeden pluh mám napevno /čelo lokomotivy/ a druhý pluh mám upevněn na kinematice - původní od BR218, že se natáčí s kinematikou. Sice je to nevzhledné, ale nemusel jsem řezat do pluhu díry pro kinematiku a zvedla se tak průjezdnost. Ukázka jízdy zde:
Na závěr foto po kompletní přestavbě, patině a osvětlení:

Jizerské lokálky 2017

Video bylo natočeno 8. července 2017 při naší dovolené v Jizerských horách :)

Výstava kolejiště na akci Sodomkovo Vysoké Mýto 3.6.2017

Dne 3. června 2017 jsme vystavovali kolejiště VEJROV v čekárně nádražní budovy hlavního nádraží ve Vysokém Mýtě. Krátký videosestřih můžete vidět zde:


Fotografie naleznete zde:
http://momentky.rajce.idnes.cz/Sodomkovo_Vysoke_Myto_-_vlacky

Arduino 6, AŽD přejezdové zařízení se závorami (LED + zvuk + serva)

Použité komponenty:
1 x Arduino Pro Mini (Nano) - Aliexpress (cca 35 CZK klon)
1 x DFPlayer MP3 (Mp3-TF-16P) - AliExpress (cca 30 CZK verze mp3-tf-16p) + doporučujeme zesilovač zvuku
4 x led červená
2 x led bílá
1 x vypínač dle volby, možné i magnetické spínače a systém relé (to je na každém, jak potřebuje)
1 x odpor 10 k pro spínač
6 x odpor 330 ohmů pro led
1 x odpor 1 k pro pin TX propojení modulů (ochrana)
1 x microSD paměťová karta - formát FAT32
1 x repro 3 W 4 ohmy
2 x modelářské servo


Program:
Program verze 2.5 - celý komplet plní všechny cykly jako na pravé železnici. 
Stav klidu - blikají bílá světla - střídání mezi výstražníky.
Stav výstrahy - sepnutím vypínače, relé, či jak si to uděláte se přepne do stavu výstrahy:
1) sepnou červená světla se zvukovým znamením
2) po určitém čase se otočí serva pro zavření závor a v koncové poloze závory se vypne zvuková výstraha
3) blikají jen červené
4) rozepnutí vypínače - červené blikají a serva se otočí, závory jdou nahoru
5) závory v koncové poloze vypnou červená světla
6) doba klidu bez světel - 30 km/hod rychlost přes přejezd
7) rozblikají se bílé

microSD karta - do kořenového adresáře nahrajte zvuk s názvem 0001.mp3
Zvuk AŽD 71 můžete stáhnout zde.

Zvuky lze použít i AŽD97 a typ SSSR /houkačka/.

Program:

// Program AZD prejezd LED červená + bílá + servo
#include <SoftwareSerial.h>
#include <Servo.h>  
Servo servo1;                                                                 // společný pin pro serva 12
SoftwareSerial mySerial(2, 3); // RX, TX                                      // piny pro zvukový modul
uint8_t play1[10] = { 0X7E, 0xFF, 0x06, 0X03, 00, 00, 0x01, 0xFE, 0xF7, 0XEF}; // protokol MP3 komunikace
int red1 = 4;                                                                 // pravá červená led
int red2 = 5;                                                                 // levá červená led
int white1 = 6;                                                              // bílá led na jednom výstražníku
int white2 = 7;                                                              // bílá led na druhém výstražníku
int ledDelay = 500;                                                           // zpoždění mezi blikáním /neměnit/ 
bool wait = true;                                                             // podmínky cyklů
bool wait2 = true;
const int  buttonPin = 13;                                                    // pin vypínače
int buttonPushCounter = 0;   // počítadlo stlačení tlačítka  (příprava na spínač)
int buttonState = 0;         // současný stav tlačítka
int lastButtonState = 0;     
int pos = 0;                  // servo
int value = 0;                // servo
//vejrov.cz

void setup()  
{
pinMode(red1, OUTPUT);
pinMode(red2, OUTPUT);
pinMode(white1, OUTPUT);
pinMode(white2, OUTPUT);
mySerial.begin(9600);
Serial.begin(9600);
pinMode(buttonPin, INPUT);
}

void loop()
{
buttonState = digitalRead(buttonPin);  

         if (buttonState == HIGH) {
 wait = true;
 if (wait2 == true){
  for (int i=0; i<10; i++) {mySerial.write( play1[i]);}                 // první cyklus červené + zvuk = přednávěst
 delay(10); 
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {
    analogWrite(red1, fadeValue);
    delay(10);
  } 
delay(ledDelay); 
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(red1, fadeValue);
    delay(10);
  } 
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {
    analogWrite(red2, fadeValue);
    delay(10);
  } 
delay(ledDelay); 
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(red2, fadeValue);
    delay(10);
  } 
    for (int i=0; i<10; i++) {mySerial.write( play1[i]);}
 delay(10); 
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {
    analogWrite(red1, fadeValue);
    delay(10);
  } 
delay(ledDelay); 
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(red1, fadeValue);
    delay(10);
  } 
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {
    analogWrite(red2, fadeValue);
    delay(10);
  } 
delay(ledDelay); 
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(red2, fadeValue);
    delay(10);
  } 
    for (int i=0; i<10; i++) {mySerial.write( play1[i]);}
 delay(10); 
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {
    analogWrite(red1, fadeValue);
    delay(10);
  } 
delay(ledDelay); 
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(red1, fadeValue);
    delay(10);
  } //vejrov.cz
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {
    analogWrite(red2, fadeValue);
    delay(10);
  } 
delay(ledDelay); 
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(red2, fadeValue);
    delay(10);
  } 
    for (int i=0; i<10; i++) {mySerial.write( play1[i]);}
 delay(10); 
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {
    analogWrite(red1, fadeValue);
    delay(10);
  } 
delay(ledDelay); 
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(red1, fadeValue);
    delay(10);
  } 
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {
    analogWrite(red2, fadeValue);
    delay(10);
  } 
delay(ledDelay); 
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(red2, fadeValue);
    delay(10);
  } 
    for (int i=0; i<10; i++) {mySerial.write( play1[i]);}
 delay(10); 
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {
    analogWrite(red1, fadeValue);
    delay(10);
  } 
delay(ledDelay); 
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(red1, fadeValue);
    delay(10);
  } 
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {
    analogWrite(red2, fadeValue);
    delay(10);
  } 
delay(ledDelay); //vejrov.cz
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(red2, fadeValue);
    delay(10);
  } 
    for (int i=0; i<10; i++) {mySerial.write( play1[i]);}
 delay(10); 
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {
    analogWrite(red1, fadeValue);
    delay(10);
  } 
delay(ledDelay); 
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(red1, fadeValue);
    delay(10);
  } 
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {
    analogWrite(red2, fadeValue);
    delay(10);
  } 
delay(ledDelay); 
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(red2, fadeValue);
    delay(10);
  } 
    for (int i=0; i<10; i++) {mySerial.write( play1[i]);}
 delay(10); 
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {
    analogWrite(red1, fadeValue);
    delay(10);
  } 
delay(ledDelay); 
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(red1, fadeValue);
    delay(10);
  } 
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {
    analogWrite(red2, fadeValue);
    delay(10);
  } 
delay(ledDelay); 
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(red2, fadeValue);
    delay(10);
  } 
    for (int i=0; i<10; i++) {mySerial.write( play1[i]);}
 delay(10); 
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {
    analogWrite(red1, fadeValue);
    delay(10);
  } 
delay(ledDelay); //vejrov.cz
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(red1, fadeValue);
    delay(10);
  } 
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {
    analogWrite(red2, fadeValue);
    delay(10);
  } 
delay(ledDelay); 
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(red2, fadeValue);
    delay(10);
  } 
  
  for (int i=0; i<10; i++) {mySerial.write( play1[i]);}
 delay(10); 
   servo1.attach(12);                                                      // druhý cyklus červené + zvuk + servo = návěst
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {
    analogWrite(red1, fadeValue);
    delay(10);
  }
  for (pos = 90; pos >= 89; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 89; pos >= 88; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 88; pos >= 87; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 87; pos >= 86; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 86; pos >= 85; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 85; pos >= 84; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 84; pos >= 83; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 83; pos >= 82; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 82; pos >= 81; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 81; pos >= 80; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}//vejrov.cz
delay(40); 
  for (pos = 80; pos >= 79; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 79; pos >= 78; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 78; pos >= 77; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 77; pos >= 76; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(red1, fadeValue);
    delay(10);
  }
   for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {
    analogWrite(red2, fadeValue);
    delay(10);
  }//vejrov.cz
  for (pos = 76; pos >= 75; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 75; pos >= 74; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 74; pos >= 73; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 73; pos >= 72; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 72; pos >= 71; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 71; pos >= 70; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 70; pos >= 69; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 69; pos >= 68; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 68; pos >= 67; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 67; pos >= 66; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40);
  for (pos = 66; pos >= 65; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 65; pos >= 64; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 64; pos >= 63; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}//vejrov.cz
delay(40); 
  for (pos = 63; pos >= 62; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
    for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(red2, fadeValue);
    delay(10);
  } 
    for (int i=0; i<10; i++) {mySerial.write( play1[i]);}
 delay(10); 
   for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {
    analogWrite(red1, fadeValue);
    delay(10);
  }
  for (pos = 52; pos >= 61; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 61; pos >= 60; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 60; pos >= 59; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 59; pos >= 58; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 58; pos >= 57; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 57; pos >= 56; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 56; pos >= 55; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); //vejrov.cz
  for (pos = 55; pos >= 54; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40);
  for (pos = 54; pos >= 53; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 53; pos >= 52; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 52; pos >= 51; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 51; pos >= 50; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 50; pos >= 49; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 49; pos >= 48; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
   for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(red1, fadeValue);
    delay(10);
  } 
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {
    analogWrite(red2, fadeValue);
    delay(10);
  } 
  for (pos = 48; pos >= 47; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 47; pos >= 46; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); //vejrov.cz
  for (pos = 46; pos >= 45; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 45; pos >= 44; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 44; pos >= 43; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 43; pos >= 42; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40);
  for (pos = 42; pos >= 41; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 41; pos >= 40; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 40; pos >= 39; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 39; pos >= 38; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 38; pos >= 37; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 37; pos >= 36; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 36; pos >= 35; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); //vejrov.cz
  for (pos = 35; pos >= 34; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
   for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(red2, fadeValue);
    delay(10);
  } 
    for (int i=0; i<10; i++) {mySerial.write( play1[i]);}
 delay(10); 
   for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {
    analogWrite(red1, fadeValue);
    delay(10);
  } 
  for (pos = 34; pos >= 33; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 33; pos >= 32; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 32; pos >= 31; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 31; pos >= 30; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40);
  for (pos = 30; pos >= 29; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 29; pos >= 28; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 28; pos >= 27; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 27; pos >= 26; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 26; pos >= 25; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 25; pos >= 24; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 24; pos >= 23; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); //vejrov.cz
  for (pos = 23; pos >= 22; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(red1, fadeValue);
    delay(10);
  } 
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {
    analogWrite(red2, fadeValue);
    delay(10);
  } 
  for (pos = 22; pos >= 21; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 21; pos >= 20; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 20; pos >= 19; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 19; pos >= 18; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40);
  for (pos = 18; pos >= 17; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 17; pos >= 16; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 16; pos >= 15; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 15; pos >= 14; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 14; pos >= 13; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 13; pos >= 12; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 12; pos >= 11; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
  for (pos = 11; pos >= 10; pos -=2){
  servo1.write(pos);  
  value = servo1.read();
  Serial.println(value);}
delay(40); 
   for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(red2, fadeValue);
    delay(10);
  } 
servo1.detach();
}

 wait2 = false;                                                       // cyklus červené bez zvuku - závory dole
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {
    analogWrite(red1, fadeValue);
    delay(10);
  } 
delay(ledDelay); 
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(red1, fadeValue);
    delay(10);
  } 
 delay(100);//vejrov.cz
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {
    analogWrite(red2, fadeValue);
    delay(10);
  } 
delay(ledDelay); 
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(red2, fadeValue);
    delay(10);
  } 
        }
        else {
 wait2 = true;
    if (wait == true){
  for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {                        // zvedání závor s červeným světlem
    analogWrite(red1, fadeValue);
    delay(10);
  } 
  servo1.attach(12);
  for (pos = 10; pos <= 11; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 11; pos <= 12; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 12; pos <= 13; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 13; pos <= 14; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 14; pos <= 15; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 15; pos <= 16; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 16; pos <= 17; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 17; pos <= 18; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 18; pos <= 19; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 19; pos <= 20; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 20; pos <= 21; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 21; pos <= 22; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 22; pos <= 23; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(red1, fadeValue);
    delay(10);
  } 
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {
    analogWrite(red2, fadeValue);
    delay(10);
  } 
  for (pos = 23; pos <= 24; pos +=2){
  servo1.write(pos);   
  value = servo1.read();//vejrov.cz
  Serial.println(value); }
delay(40); 
  for (pos = 24; pos <= 25; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 25; pos <= 26; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 26; pos <= 27; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 27; pos <= 28; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 28; pos <= 29; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 29; pos <= 30; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 30; pos <= 31; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 31; pos <= 32; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 32; pos <= 33; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 33; pos <= 34; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 34; pos <= 35; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 35; pos <= 36; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(red2, fadeValue);
    delay(10);
  } 
   for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {
    analogWrite(red1, fadeValue);
    delay(10);
  } 
  for (pos = 36; pos <= 37; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 37; pos <= 38; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 38; pos <= 39; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); //vejrov.cz
  for (pos = 39; pos <= 40; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 40; pos <= 41; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 41; pos <= 42; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 42; pos <= 43; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 43; pos <= 44; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 44; pos <= 45; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 45; pos <= 46; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 46; pos <= 47; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 47; pos <= 48; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 48; pos <= 49; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(red1, fadeValue);
    delay(10);
  } 
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {
    analogWrite(red2, fadeValue);
    delay(10);
  } 
  for (pos = 49; pos <= 50; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 50; pos <= 51; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 51; pos <= 52; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 52; pos <= 53; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 53; pos <= 54; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 54; pos <= 55; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); //vejrov.cz
  for (pos = 55; pos <= 56; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 56; pos <= 57; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 57; pos <= 58; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 58; pos <= 59; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 59; pos <= 60; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 60; pos <= 61; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 61; pos <= 62; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(red2, fadeValue);
    delay(10);
  } 
   for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {
    analogWrite(red1, fadeValue);
    delay(10);
  } 
  for (pos = 62; pos <= 63; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 63; pos <= 64; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 64; pos <= 65; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 65; pos <= 66; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 66; pos <= 67; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 67; pos <= 68; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 68; pos <= 69; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 69; pos <= 70; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 70; pos <= 71; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 71; pos <= 72; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 72; pos <= 73; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 73; pos <= 74; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 74; pos <= 75; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(red1, fadeValue);
    delay(10);
  } 
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {
    analogWrite(red2, fadeValue);
    delay(10);
  } 
  for (pos = 75; pos <= 76; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); //vejrov.cz
  for (pos = 76; pos <= 77; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 77; pos <= 78; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 78; pos <= 79; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 79; pos <= 80; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
   for (pos = 80; pos <= 81; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 81; pos <= 82; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 82; pos <= 83; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 83; pos <= 84; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 84; pos <= 85; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 85; pos <= 86; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 86; pos <= 87; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 87; pos <= 88; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 88; pos <= 89; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (pos = 89; pos <= 90; pos +=2){
  servo1.write(pos);   
  value = servo1.read();
  Serial.println(value); }
delay(40); 
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(red2, fadeValue);
    delay(10);
  } 
servo1.detach(); 
delay (5000);}                                                          // zpoždění pro bílé
  wait = false;                                                         // bílé 
     for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {
    analogWrite(white1, fadeValue);
    delay(30);
  } 
delay(600); 
    for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(white1, fadeValue);
    delay(30);
  }
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 255) {
    analogWrite(white2, fadeValue);
    delay(30);
  } 
delay(600); //vejrov.cz
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 255) {
    analogWrite(white2, fadeValue);
    delay(30);
  } 
        }
        }

Funkce viz. video (osazeno do výstražníků):


Funkce viz. video (typ AŽD71):

Dále video typ AŽD97 a SSSR.