Close

HadrDisk

Vytvořené odpovědi

Aktuálně je na stránce zobrazeno 30 příspěvků - 1,351. až 1,380. (celkem z 2,760)
  • Autor
    Příspěvky
  • odpověď na: Řídící jednotka pro peletový kotel #9126
    posjirka
    Účastník

    a kde máš to resetování watchdogu? 🙂

    
            digitalWrite(davkovaniPelet, LOW); //davkuj pelety
            delay(4000); //pockej 4s
            wdt_reset(); // resetuj watchdog
            delay(4000); //pockej 4s
            wdt_reset(); // resetuj watchdog
            digitalWrite(davkovaniPelet, HIGH); //vypni davkovani
            delay(1000); //pockej 1s
            wdt_reset(); // resetuj watchdog
    
    odpověď na: výpis na televizi TV OUT #9125
    Vojtěch Vosáhlo
    Účastník

    No to samozřejmě velive záleží na typu arduina který používáte. S Unem toho moc neuděláte, bohužel. Viz např. Reddit: https://m.reddit.com/r/arduino/comments/1dsusl/increasing_the_max_resolution_on_the_tvout_library/

    odpověď na: Řídící jednotka pro peletový kotel #9124
    johnyhol
    Účastník
    
    
    // REGULACE PELETKOVEHO KOTLE
    // author. Johnyhol & by JP
    // v 14_5_2016
    
    // changelog
    // v 5_11_2016
    //   zmena casu - upraveno pro realny provoz
    // v 4_11_2016
    //   zmena vsech vystupu na rele
    // v 14_5_2016
    //   precislovani pinu
    //   zmena funkce fotobunky z digitalu na analog
    //   dolpneni seriove komunikace o hodnotu fotobunky 
    // v 30_3_2016
    //   oprava funkce tlacitka kvitace poruchy -> HIGH->LOW
    //   umazani parametru "long cas=13000;" -> jiz neni potreba
    //   umazani parametru "//delay(84000); //pockej 84s" u funkce dohoreni -> jiz neni potreba
    //   umazani parametru "//delay(12000); //po dobu 12s" u funkce davkovani zapalovaci davky pelet -> jiz neni potreba
    //   umazani parametru "//if(digitalRead(prostorovyTermostat) == LOW || digitalRead(kotlovyTermostat) == LOW){  // prostorovy  nebo  kotlovy termostat vypne" u funkce zapaleni
    //   drobne upravy textu/popisu jednotlivych parametru/funkci
    // v 27_3_2016
    //   uprava procesu zapalovani - nebude reagovat na prostorovy termostat
    //   uprava dlouhych delayu na smycky,  pro vyuziti watchdogu - autoreset pri zaseknuti procesou - doba nez se resetuje = 8s
    //   nastaveni definice poruch pro pozdejsi vyuziti
    // v22_3_2016
    //   uprava ladicich textu pro termostaty
    // v21_3_2016
    //   presunuti testuPlamene pouze do smycky udrzuj horeni
    //   doplneni textu do testu horeni
    //   oprava textu zprav
    //   zruseni diakritiky
    //   zapnuti alarmu pri vyskytu poruchy
    // v20_3_2016
    //   slouceni podminenych funkci  
    //   vypnuti zhaveni pri rozepnuti termostatu (kotlovy nebo prostorovy)
    //   rozdeleni funkci do vlastnich funkcnich bloku
    //   zapojeni seriove komunikace pro odladeni funkci 
    // v16_3_2016
    //   uprava podminky smycek (zruseno =)
    //   posun zpozdeni 5s z procesu zapaleni na jeho konec
    //   doplnena podminka reakce na termostaty (kotlovy/prostorovy) v procesu zapaleni
    //   upravena doba na 1 zapalovaci proces - nastavitelna trimrem na analog.vstupu A0. v rozsahu 60 - 600 s = 1 - 10 min. - nastaveni pouze v dobe necinosti kotle
    //   nastaveni poruchy a jeji kvitance tlacitkem na pinu 9
    
    // definice poruch
    // bit  funkce
    // 0    prehrati kotle pri zapalovani
    // 1    ztrata plamene pri horeni
    // 2    volne
    // 3    volne
    // 4    volne
    // 5    volne
    // 6    volne
    // 7    volne
    
    // knihovna watchdogu
    #include <avr/wdt.h>
    
    #define davkovaniPelet 2 //davkovani pelet snek
    #define spirala 3 //zapalovaci spirala
    #define ventilator 5 //ventilator
    #define alarm 6 //signalizace poruchy
    #define prostorovyTermostat 7 //prostorovy termostat
    #define kotlovyTermostat 8 //kotlovy termostat
    #define fotobunka 15 //fotobunka pro kontrolu plamene DI15 = A1 pro arduino UNO
    #define trimr1 14 // nastaveni doby zapaleni  DI14 = A0 pro arduino UNO
    #define tlacitkoKvitance 9 // pin tlacitka kvitance poruchy
    
    int smycka1 = 0; // pomocna smycka - zapaleni
    int smycka1max = 600; // max.pomocne smycky - ted jiz nastavitelne trimrem na A0 60-600s
    int smycka2 = 0; // pomocna smycka - udrzeni horeni
    int smycka2max = 2; // max.pomocne smycky
    int smycka3 = 0; // pomocna smycka - pocet pokusu o zapaleni
    int smycka3max = 2; // max.pomocne smycky
    int smycka4 = 0; // pomocna smycka - davkovani zapalne davky pelet
    int smycka4max = 110; // max.pomocne smycky
    int smycka5 = 0; // pomocna smycka - rozhoreni
    int smycka5max = 50; // max.pomocne smycky
    int smycka6 = 0; // pomocna smycka - dohoreni
    int smycka6max = 840; // max.pomocne smycky
    byte porucha = 0; // promenna pro zaznam poruchy
    int ldr = 1; //analogovy pin kde je pripojen fotorezistor
    int ldr_value = 0; //promenna pro zaznam hodnot z fotorezistoru
    
    void setup() {
      // nastav seriovou komunikaci na rychlost 9600 bd 
      Serial.begin(9600);
      Serial.println("Nastavuji vstupy/vystupy"); // ladici seriova komunikace
      pinMode(davkovaniPelet, OUTPUT);
      pinMode(spirala, OUTPUT);
      pinMode(ventilator, OUTPUT);
      pinMode(alarm, OUTPUT);
      pinMode(prostorovyTermostat, INPUT);
      pinMode(kotlovyTermostat, INPUT);
      pinMode(fotobunka, INPUT);
      pinMode(trimr1, INPUT);
      pinMode(tlacitkoKvitance, INPUT);
      // vsechno vypni
      vypniVse();
            // nastav watchdog na 8s
            wdt_enable(WDTO_8S);
    }
    
    void loop() {
            wdt_reset(); // resetuj watchdog
            ldr_value = analogRead(ldr); //čte hodnoty LDR
    Serial.print("HODNOTA FOTOBUNKY = ");
    Serial.println(ldr_value); //zobrazí hodnoty LDR na seriove lince
    
      Serial.println("Cekam na sepnuti termostatu ..."); // ladici seriova komunikace
      smycka1max = map(analogRead(trimr1), 0, 1024, 60, 600); // nastaveni doby zapaleni trimrem na A0
      if(digitalRead(prostorovyTermostat) == HIGH){ // prostorovy termostat je zapnuty
                Serial.println("Prostorovy termostat zapnut"); // ladici seriova komunikace
        if(digitalRead(kotlovyTermostat) == HIGH){  // kotlovy termostat je zapnuty
              Serial.println("Kotlovy termostat zapnut"); // ladici seriova komunikace
          // startovaci davka pelet
          //------------------------
          zapalovaciDavkaPelet();
          
          // proces zapaleni
          //----------------
          zapaleni();
          
          // test poruchy
          // -----------------
          //testPlamene(); 
          
          // udrzeni horeni
          //--------------
          udrzujHoreni();
          
          // dohoreni
          //---------
          dohoreni();
        }
        } else {
          Serial.println("Prostorovy termostat vypnut"); // ladici seriova komunikace
        }
      // kvitence pripadne poruchy
      //-------------------------------
      kvitancePoruchy();
    }
    
    void vypniVse() {
      // funkce vypni vse
      Serial.println("Vypinam vsechny rele ..."); // ladici seriova komunikace
      digitalWrite(davkovaniPelet, HIGH); //vypni davkovani
      digitalWrite(spirala, HIGH); //vypni zhaveni
      digitalWrite(ventilator, HIGH); //vypni ventilator
    }
    
    void zapalovaciDavkaPelet() {
      // prvotni davkovani pelet pro zapaleni
      Serial.println("Davkuji pelety pro zapaleni ... 110s"); // ladici seriova komunikace
      digitalWrite(davkovaniPelet, LOW); //davkuj pelety
            for (smycka4 = 0;  smycka4 < smycka4max; smycka4 ++){
        delay(1000); 
              wdt_reset(); // resetuj watchdog
            }
      digitalWrite(davkovaniPelet, HIGH); //potom vypni davkovani
      digitalWrite(ventilator, LOW); //zapni ventilator
      digitalWrite(spirala, LOW); //zapni zhaveni
    }
    
    void zapaleni() {
      // funkce zapaleni pelet
      // 3 pokusy o zapaleni
      Serial.println("Spoustim zapaleni ..."); // ladici seriova komunikace
      for (smycka3 = 0;  smycka3 < smycka3max; smycka3 ++){
        // smycka "1-10" minut zapalovani
        for (smycka1 = 0;  smycka1 < smycka1max; smycka1 ++){
                            wdt_reset(); // resetuj watchdog
          Serial.print("Pokus "); // ladici seriova komunikace
          Serial.print(smycka3); // ladici seriova komunikace
          Serial.print("/"); // ladici seriova komunikace
          Serial.print(smycka3max); // ladici seriova komunikace
          Serial.print(" stav: "); // ladici seriova komunikace
          Serial.print(smycka1); // ladici seriova komunikace
          Serial.print("s/"); // ladici seriova komunikace
          Serial.print(smycka1max); // ladici seriova komunikace
          Serial.println("s "); // ladici seriova komunikace
                            
          if(digitalRead(kotlovyTermostat) == LOW){ // kotlovy termostat vypne
            digitalWrite(spirala, HIGH); //vypni zhaveni
            smycka1 = smycka1max; // ukonci smycku1
            smycka3 = smycka3max; // ukonci smycku3
            Serial.println("Rozepnuti termostatu ..."); // ladici seriova komunikace
                                    bitSet(porucha,0); // nastav poruchu bit c.0 na "1"
          }
          if(analogRead(fotobunka) <= 500){ //pokud fotobunka vidi plamen
            digitalWrite(spirala, HIGH); //vypni zhaveni
            smycka1 = smycka1max; // ukonci smycku1
            smycka3 = smycka3max; // ukonci smycku3 
            Serial.println(" hori ...");   // ladici seriova komunikace       
          } else {
            Serial.println(" nehori ...");   // ladici seriova komunikace 
          }
          delay(1000);
        }
                    for (smycka5 = 0;  smycka5 < smycka5max; smycka5 ++){
                delay(1000); 
                      wdt_reset(); // resetuj watchdog
                    }
        //delay(5000); //cekej 5s
      }
    }
    
    void udrzujHoreni() {
      // funkce udrzeni horeni
      ldr_value = analogRead(ldr); //čte hodnoty LDR
      Serial.print("HODNOTA FOTOBUNKY = ");
      Serial.println(ldr_value); //zobrazí hodnoty LDR na seriove lince
      Serial.println("Udrzeni horeni ..."); // ladici seriova komunikace
      for (smycka2 = 0;  smycka2 < smycka2max; smycka2 ++){
                    wdt_reset(); // resetuj watchdog
        smycka2 = 0; // vynuluj smycku
        if(digitalRead(prostorovyTermostat) == HIGH  && digitalRead(kotlovyTermostat) == HIGH){ // prostorovy + kotlovy termostat je zapnuty
          if(analogRead(fotobunka) <= 500){ //pokud fotobunka vidi plamen
                      Serial.println("Test plamene ... hori"); // ladici seriova komunikace
            digitalWrite(davkovaniPelet, LOW); //davkuj pelety
            delay(8000); //pockej 8s
            digitalWrite(davkovaniPelet, HIGH); //vypni davkovani
            delay(1000); //pockej 1s
          } else {
            delay(1000); // pocekej jeste 1s a zkus to znovu
            if(analogRead(fotobunka) >= 500){  //pokud fotobunka nevidi plamen
                                    Serial.println("Test plamene ... porucha"); // ladici seriova komunikace
                                    smycka2 = smycka2max; // ukonci smycku
                        //porucha = 1; // nastav poruchu
                                    bitSet(porucha,1); // nastav poruchu bit c.1 na "1"
                                    digitalWrite(alarm, LOW); // zapni alarm
            }
          }
        } else {
          smycka2 = smycka2max; // ukonci smycku
        }  
      }
    }
    
    void dohoreni() {
      // funkce dohoreni
      Serial.println("Dohoreni ..."); // ladici seriova komunikace
      digitalWrite(davkovaniPelet, HIGH); //vypni davkovani pelet
      digitalWrite(spirala, HIGH); //vypni zhaveni - pro jistotu
            for (smycka6 = 0;  smycka6 < smycka6max; smycka6 ++){
        delay(1000); 
              wdt_reset(); // resetuj watchdog
            }
      digitalWrite(ventilator, HIGH); //vypni ventilator
    }
    
    void kvitancePoruchy() {
      // funkce kvitance poruchy
      
      if(porucha > 0 ){ // kdyz je porucha aktivni
            Serial.println("Kvitance poruchy ..."); // ladici seriova komunikace
        // vypni vse
        vypniVse();
        while (digitalRead(tlacitkoKvitance) == LOW) { // zapni alarm a cekej na stisk tlacitka
          digitalWrite(alarm, LOW); // zapni alarm
          Serial.println("Porucha ... cekam na kvitanci"); // ladici seriova komunikace
                            wdt_reset(); // resetuj watchdog
        }
        Serial.println("Porucha kvitovana ..."); // ladici seriova komunikace
        digitalWrite(alarm, HIGH); // vypni alarm
        porucha = 0; // vynuluj poruchu
      } else {  // jinak 
        Serial.println("Zadna porucha  ..."); // ladici seriova komunikace
        digitalWrite(alarm, HIGH); // vypni alarm
    }
    }
    

    Měním čas(zpoždění) u funkce „udrzujHoreni“:

    
    digitalWrite(davkovaniPelet, LOW); //davkuj pelety
            delay(8000); //pockej 8s
            digitalWrite(davkovaniPelet, HIGH); //vypni davkovani
            delay(1000); //pockej 1s
    

    Původně tam bylo 1s davkovani pelet a 1s vypnuto davkovani. To fungovalo bez problémů, ale když změním zpoždění „vypni davkovani“ na jiný čas než 1s tak to nejde.

    odpověď na: Řídící jednotka pro peletový kotel #9115
    posjirka
    Účastník

    co to znamená, že to nejde ? Nevím co měníš … hoď sem kod …

    odpověď na: Řídící jednotka pro peletový kotel #9101
    johnyhol
    Účastník

    Tak jsem zkoušel cvičně změnit čas u pauzy dávkování na 1x 5s (myslel jsem, že když to bude fungovat tak že to rozdělím jak radíš na 2x 5s) a stejně to nejde. Funguje to pouze s pauzou 1s. Zkoušel jsem i 2s a to už taky nešlo. Tak nevím jestli jsem tě dobře pochopil, nebo je chyba ještě jinde.

    odpověď na: Řídící jednotka pro peletový kotel #9100
    posjirka
    Účastník

    ten watchdog je ochranná funkce … jak jsem již psal …
    celá funkce watchdog se skládá z:

    – vložení knihovny: #include <avr/wdt.h>
    – aktivace watchdogu v setupu : wdt_enable(WDTO_8S);
    – průběžný reset : wdt_reset();

    a 8s je pro něj maximum:
    https://tushev.org/articles/arduino/5/arduino-and-watchdog-timer
    add.2. – ano ten kod musíš napsat všude, kde bude čas delší než 8s. Radši méně, když máš pak víc funkcí nemusel by uplně všechno včas stíhat a omylem by se procesor sám resetoval.

    když chceš pauzu 10s tak jí rozděl na 2x 5s a pokaždé resetuj watchdog….
    u 15s to rozděl na 3x 5s a opět pokaždé resetuj watchdog …

    odpověď na: Řídící jednotka pro peletový kotel #9099
    johnyhol
    Účastník

    Takže pokud to dobře chápu, tak je těch max. 8s na watchdogu nastaveno už někde v knihovně a proto nejde v programu nastavit víc? Zkoušel jsem právě na něm (ve void setup) nastavit víc a už to hlásilo chybu.
    Ještě k bodu 2., ten kód co navrhuješ, ten musím napsat všude (do každý funkce: void loop, void zapalovaciDavkaPelet atd.) kde je watchdog použitý?A celkový čas by měl být delší než maximální čas funkce? (např. když bude pauza dávkování 10s tak součet časů watchdogu musí být 11s a víc?)

    Díky moc za rady!

    odpověď na: Řídící jednotka pro peletový kotel #9098
    posjirka
    Účastník

    problém je v tom, že je tu použit tzv. watchog. ten je nastaven na určitý čas (8s což je jeho maximum). když se nezresetuje včas watchdog a přeteče tak se resetuje celý procesor. To je ta halvní výhoda celéhe řešneí. Když se někde kousne procesor tak se sám resetuje a pokračuje dál . Je to odpově´d na otázku, proč nejde nastavit čas delší než 8s.
    1. nepoužívej čas delší než 4-5s ať máš nějákou rezervu.
    2. Pro delší čas použij více postupných pauz:

    delay(3000); 
    wdt_reset(); // resetuj watchdog
    delay(3000); 
    wdt_reset(); // resetuj watchdog
    delay(4000); 
    wdt_reset(); // resetuj watchdog

    celý kod je řešen opravdu primitivně. Tak jsem ho i bral aby s ena něm dalo dobře naučit jak co funguje. I proto jen jej rozdělil na funkce, které jsou zkoumat postupně. Mrkni na to a kdybys něco nepobíral, tak určitě napovíme ….

    odpověď na: Řídící jednotka pro peletový kotel #9097
    johnyhol
    Účastník

    Omluvám se, špatně jsem zkopíroval kód…
    Druhý pokus:

    
    
    // REGULACE PELETKOVEHO KOTLE
    // author. Johnyhol & by JP
    // v 14_5_2016
    
    // changelog
    // v 5_11_2016
    //   zmena casu - upraveno pro realny provoz
    // v 4_11_2016
    //   zmena vsech vystupu na rele
    // v 14_5_2016
    //   precislovani pinu
    //   zmena funkce fotobunky z digitalu na analog
    //   dolpneni seriove komunikace o hodnotu fotobunky 
    // v 30_3_2016
    //   oprava funkce tlacitka kvitace poruchy -> HIGH->LOW
    //   umazani parametru "long cas=13000;" -> jiz neni potreba
    //   umazani parametru "//delay(84000); //pockej 84s" u funkce dohoreni -> jiz neni potreba
    //   umazani parametru "//delay(12000); //po dobu 12s" u funkce davkovani zapalovaci davky pelet -> jiz neni potreba
    //   umazani parametru "//if(digitalRead(prostorovyTermostat) == LOW || digitalRead(kotlovyTermostat) == LOW){  // prostorovy  nebo  kotlovy termostat vypne" u funkce zapaleni
    //   drobne upravy textu/popisu jednotlivych parametru/funkci
    // v 27_3_2016
    //   uprava procesu zapalovani - nebude reagovat na prostorovy termostat
    //   uprava dlouhych delayu na smycky,  pro vyuziti watchdogu - autoreset pri zaseknuti procesou - doba nez se resetuje = 8s
    //   nastaveni definice poruch pro pozdejsi vyuziti
    // v22_3_2016
    //   uprava ladicich textu pro termostaty
    // v21_3_2016
    //   presunuti testuPlamene pouze do smycky udrzuj horeni
    //   doplneni textu do testu horeni
    //   oprava textu zprav
    //   zruseni diakritiky
    //   zapnuti alarmu pri vyskytu poruchy
    // v20_3_2016
    //   slouceni podminenych funkci  
    //   vypnuti zhaveni pri rozepnuti termostatu (kotlovy nebo prostorovy)
    //   rozdeleni funkci do vlastnich funkcnich bloku
    //   zapojeni seriove komunikace pro odladeni funkci 
    // v16_3_2016
    //   uprava podminky smycek (zruseno =)
    //   posun zpozdeni 5s z procesu zapaleni na jeho konec
    //   doplnena podminka reakce na termostaty (kotlovy/prostorovy) v procesu zapaleni
    //   upravena doba na 1 zapalovaci proces - nastavitelna trimrem na analog.vstupu A0. v rozsahu 60 - 600 s = 1 - 10 min. - nastaveni pouze v dobe necinosti kotle
    //   nastaveni poruchy a jeji kvitance tlacitkem na pinu 9
    
    // definice poruch
    // bit  funkce
    // 0    prehrati kotle pri zapalovani
    // 1    ztrata plamene pri horeni
    // 2    volne
    // 3    volne
    // 4    volne
    // 5    volne
    // 6    volne
    // 7    volne
    
    // knihovna watchdogu
    #include <avr/wdt.h>
    
    #define davkovaniPelet 2 //davkovani pelet snek
    #define spirala 3 //zapalovaci spirala
    #define ventilator 5 //ventilator
    #define alarm 6 //signalizace poruchy
    #define prostorovyTermostat 7 //prostorovy termostat
    #define kotlovyTermostat 8 //kotlovy termostat
    #define fotobunka 15 //fotobunka pro kontrolu plamene DI15 = A1 pro arduino UNO
    #define trimr1 14 // nastaveni doby zapaleni  DI14 = A0 pro arduino UNO
    #define tlacitkoKvitance 9 // pin tlacitka kvitance poruchy
    
    int smycka1 = 0; // pomocna smycka - zapaleni
    int smycka1max = 600; // max.pomocne smycky - ted jiz nastavitelne trimrem na A0 60-600s
    int smycka2 = 0; // pomocna smycka - udrzeni horeni
    int smycka2max = 2; // max.pomocne smycky
    int smycka3 = 0; // pomocna smycka - pocet pokusu o zapaleni
    int smycka3max = 2; // max.pomocne smycky
    int smycka4 = 0; // pomocna smycka - davkovani zapalne davky pelet
    int smycka4max = 110; // max.pomocne smycky
    int smycka5 = 0; // pomocna smycka - rozhoreni
    int smycka5max = 50; // max.pomocne smycky
    int smycka6 = 0; // pomocna smycka - dohoreni
    int smycka6max = 840; // max.pomocne smycky
    byte porucha = 0; // promenna pro zaznam poruchy
    int ldr = 1; //analogovy pin kde je pripojen fotorezistor
    int ldr_value = 0; //promenna pro zaznam hodnot z fotorezistoru
    
    void setup() {
      // nastav seriovou komunikaci na rychlost 9600 bd 
      Serial.begin(9600);
      Serial.println("Nastavuji vstupy/vystupy"); // ladici seriova komunikace
      pinMode(davkovaniPelet, OUTPUT);
      pinMode(spirala, OUTPUT);
      pinMode(ventilator, OUTPUT);
      pinMode(alarm, OUTPUT);
      pinMode(prostorovyTermostat, INPUT);
      pinMode(kotlovyTermostat, INPUT);
      pinMode(fotobunka, INPUT);
      pinMode(trimr1, INPUT);
      pinMode(tlacitkoKvitance, INPUT);
      // vsechno vypni
      vypniVse();
            // nastav watchdog na 8s
            wdt_enable(WDTO_8S);
    }
    
    void loop() {
            wdt_reset(); // resetuj watchdog
            ldr_value = analogRead(ldr); //čte hodnoty LDR
    Serial.print("HODNOTA FOTOBUNKY = ");
    Serial.println(ldr_value); //zobrazí hodnoty LDR na seriove lince
    
      Serial.println("Cekam na sepnuti termostatu ..."); // ladici seriova komunikace
      smycka1max = map(analogRead(trimr1), 0, 1024, 60, 600); // nastaveni doby zapaleni trimrem na A0
      if(digitalRead(prostorovyTermostat) == HIGH){ // prostorovy termostat je zapnuty
                Serial.println("Prostorovy termostat zapnut"); // ladici seriova komunikace
        if(digitalRead(kotlovyTermostat) == HIGH){  // kotlovy termostat je zapnuty
              Serial.println("Kotlovy termostat zapnut"); // ladici seriova komunikace
          // startovaci davka pelet
          //------------------------
          zapalovaciDavkaPelet();
          
          // proces zapaleni
          //----------------
          zapaleni();
          
          // test poruchy
          // -----------------
          //testPlamene(); 
          
          // udrzeni horeni
          //--------------
          udrzujHoreni();
          
          // dohoreni
          //---------
          dohoreni();
        }
        } else {
          Serial.println("Prostorovy termostat vypnut"); // ladici seriova komunikace
        }
      // kvitence pripadne poruchy
      //-------------------------------
      kvitancePoruchy();
    }
    
    void vypniVse() {
      // funkce vypni vse
      Serial.println("Vypinam vsechny rele ..."); // ladici seriova komunikace
      digitalWrite(davkovaniPelet, HIGH); //vypni davkovani
      digitalWrite(spirala, HIGH); //vypni zhaveni
      digitalWrite(ventilator, HIGH); //vypni ventilator
    }
    
    void zapalovaciDavkaPelet() {
      // prvotni davkovani pelet pro zapaleni
      Serial.println("Davkuji pelety pro zapaleni ... 110s"); // ladici seriova komunikace
      digitalWrite(davkovaniPelet, LOW); //davkuj pelety
            for (smycka4 = 0;  smycka4 < smycka4max; smycka4 ++){
        delay(1000); 
              wdt_reset(); // resetuj watchdog
            }
      digitalWrite(davkovaniPelet, HIGH); //potom vypni davkovani
      digitalWrite(ventilator, LOW); //zapni ventilator
      digitalWrite(spirala, LOW); //zapni zhaveni
    }
    
    void zapaleni() {
      // funkce zapaleni pelet
      // 3 pokusy o zapaleni
      Serial.println("Spoustim zapaleni ..."); // ladici seriova komunikace
      for (smycka3 = 0;  smycka3 < smycka3max; smycka3 ++){
        // smycka "1-10" minut zapalovani
        for (smycka1 = 0;  smycka1 < smycka1max; smycka1 ++){
                            wdt_reset(); // resetuj watchdog
          Serial.print("Pokus "); // ladici seriova komunikace
          Serial.print(smycka3); // ladici seriova komunikace
          Serial.print("/"); // ladici seriova komunikace
          Serial.print(smycka3max); // ladici seriova komunikace
          Serial.print(" stav: "); // ladici seriova komunikace
          Serial.print(smycka1); // ladici seriova komunikace
          Serial.print("s/"); // ladici seriova komunikace
          Serial.print(smycka1max); // ladici seriova komunikace
          Serial.println("s "); // ladici seriova komunikace
                            
          if(digitalRead(kotlovyTermostat) == LOW){ // kotlovy termostat vypne
            digitalWrite(spirala, HIGH); //vypni zhaveni
            smycka1 = smycka1max; // ukonci smycku1
            smycka3 = smycka3max; // ukonci smycku3
            Serial.println("Rozepnuti termostatu ..."); // ladici seriova komunikace
                                    bitSet(porucha,0); // nastav poruchu bit c.0 na "1"
          }
          if(analogRead(fotobunka) <= 500){ //pokud fotobunka vidi plamen
            digitalWrite(spirala, HIGH); //vypni zhaveni
            smycka1 = smycka1max; // ukonci smycku1
            smycka3 = smycka3max; // ukonci smycku3 
            Serial.println(" hori ...");   // ladici seriova komunikace       
          } else {
            Serial.println(" nehori ...");   // ladici seriova komunikace 
          }
          delay(1000);
        }
                    for (smycka5 = 0;  smycka5 < smycka5max; smycka5 ++){
                delay(1000); 
                      wdt_reset(); // resetuj watchdog
                    }
        //delay(5000); //cekej 5s
      }
    }
    
    void udrzujHoreni() {
      // funkce udrzeni horeni
      ldr_value = analogRead(ldr); //čte hodnoty LDR
      Serial.print("HODNOTA FOTOBUNKY = ");
      Serial.println(ldr_value); //zobrazí hodnoty LDR na seriove lince
      Serial.println("Udrzeni horeni ..."); // ladici seriova komunikace
      for (smycka2 = 0;  smycka2 < smycka2max; smycka2 ++){
                    wdt_reset(); // resetuj watchdog
        smycka2 = 0; // vynuluj smycku
        if(digitalRead(prostorovyTermostat) == HIGH  && digitalRead(kotlovyTermostat) == HIGH){ // prostorovy + kotlovy termostat je zapnuty
          if(analogRead(fotobunka) <= 500){ //pokud fotobunka vidi plamen
                      Serial.println("Test plamene ... hori"); // ladici seriova komunikace
            digitalWrite(davkovaniPelet, LOW); //davkuj pelety
            delay(8000); //pockej 8s
            digitalWrite(davkovaniPelet, HIGH); //vypni davkovani
            delay(10000); //pockej 10s
          } else {
            delay(1000); // pocekej jeste 1s a zkus to znovu
            if(analogRead(fotobunka) >= 500){  //pokud fotobunka nevidi plamen
                                    Serial.println("Test plamene ... porucha"); // ladici seriova komunikace
                                    smycka2 = smycka2max; // ukonci smycku
                        //porucha = 1; // nastav poruchu
                                    bitSet(porucha,1); // nastav poruchu bit c.1 na "1"
                                    digitalWrite(alarm, LOW); // zapni alarm
            }
          }
        } else {
          smycka2 = smycka2max; // ukonci smycku
        }  
      }
    }
    
    void dohoreni() {
      // funkce dohoreni
      Serial.println("Dohoreni ..."); // ladici seriova komunikace
      digitalWrite(davkovaniPelet, HIGH); //vypni davkovani pelet
      digitalWrite(spirala, HIGH); //vypni zhaveni - pro jistotu
            for (smycka6 = 0;  smycka6 < smycka6max; smycka6 ++){
        delay(1000); 
              wdt_reset(); // resetuj watchdog
            }
      digitalWrite(ventilator, HIGH); //vypni ventilator
    }
    
    void kvitancePoruchy() {
      // funkce kvitance poruchy
      
      if(porucha > 0 ){ // kdyz je porucha aktivni
            Serial.println("Kvitance poruchy ..."); // ladici seriova komunikace
        // vypni vse
        vypniVse();
        while (digitalRead(tlacitkoKvitance) == LOW) { // zapni alarm a cekej na stisk tlacitka
          digitalWrite(alarm, LOW); // zapni alarm
          Serial.println("Porucha ... cekam na kvitanci"); // ladici seriova komunikace
                            wdt_reset(); // resetuj watchdog
        }
        Serial.println("Porucha kvitovana ..."); // ladici seriova komunikace
        digitalWrite(alarm, HIGH); // vypni alarm
        porucha = 0; // vynuluj poruchu
      } else {  // jinak 
        Serial.println("Zadna porucha  ..."); // ladici seriova komunikace
        digitalWrite(alarm, HIGH); // vypni alarm
    }
    }
    
    odpověď na: Řídící jednotka pro peletový kotel #9096
    johnyhol
    Účastník

    Ahoj kluci, tak jsem se do toho opět po půl roce pustil a chtěl bych to zkusit spustit naostro, tedy přímo v kotli. Udělal jsem tedy úpravy časů (prodloužil jsem je na reálný hodnoty) a výstupů (změnil jsem je na relé). Skoro všechno funguje, jenom se mi nedaří nastavit čas dávkování pelet. Pro testování bylo nastaveno 1s sypání pelet (dávkování) a 1s stání(hoření). Dávkování se mi podařilo změnit na 8s, ale po změně stání z 1s na 10s se to chová nějak chaoticky. Dávkuje to správně 8s a pak to jenom procvakne relé a vyskočí alarm. Můžete na to prosím kouknout kde je chyba?
    Tady je kód:

    <pre>
    
    <font color="#434f54">// REGULACE PELETKOVEHO KOTLE</font>
    <font color="#434f54">// author. Johnyhol & by JP</font>
    <font color="#434f54">// v 14_5_2016</font>
    
    <font color="#434f54">// changelog</font>
    <font color="#434f54">// v 4_11_2016</font>
    <font color="#434f54">// &nbsp;&nbsp;zmena vsech vystupu na rele</font>
    <font color="#434f54">// v 14_5_2016</font>
    <font color="#434f54">// &nbsp;&nbsp;precislovani pinu</font>
    <font color="#434f54">// &nbsp;&nbsp;zmena funkce fotobunky z digitalu na analog</font>
    <font color="#434f54">// &nbsp;&nbsp;dolpneni seriove komunikace o hodnotu fotobunky </font>
    <font color="#434f54">// v 30_3_2016</font>
    <font color="#434f54">// &nbsp;&nbsp;oprava funkce tlacitka kvitace poruchy -> HIGH->LOW</font>
    <font color="#434f54">// &nbsp;&nbsp;umazani parametru "long cas=13000;" -> jiz neni potreba</font>
    <font color="#434f54">// &nbsp;&nbsp;umazani parametru "//delay(84000); //pockej 84s" u funkce dohoreni -> jiz neni potreba</font>
    <font color="#434f54">// &nbsp;&nbsp;umazani parametru "//delay(12000); //po dobu 12s" u funkce davkovani zapalovaci davky pelet -> jiz neni potreba</font>
    <font color="#434f54">// &nbsp;&nbsp;umazani parametru "//if(digitalRead(prostorovyTermostat) == LOW || digitalRead(kotlovyTermostat) == LOW){ &nbsp;// prostorovy &nbsp;nebo &nbsp;kotlovy termostat vypne" u funkce zapaleni</font>
    <font color="#434f54">// &nbsp;&nbsp;drobne upravy textu/popisu jednotlivych parametru/funkci</font>
    <font color="#434f54">// v 27_3_2016</font>
    <font color="#434f54">// &nbsp;&nbsp;uprava procesu zapalovani - nebude reagovat na prostorovy termostat</font>
    <font color="#434f54">// &nbsp;&nbsp;uprava dlouhych delayu na smycky, &nbsp;pro vyuziti watchdogu - autoreset pri zaseknuti procesou - doba nez se resetuje = 8s</font>
    <font color="#434f54">// &nbsp;&nbsp;nastaveni definice poruch pro pozdejsi vyuziti</font>
    <font color="#434f54">// v22_3_2016</font>
    <font color="#434f54">// &nbsp;&nbsp;uprava ladicich textu pro termostaty</font>
    <font color="#434f54">// v21_3_2016</font>
    <font color="#434f54">// &nbsp;&nbsp;presunuti testuPlamene pouze do smycky udrzuj horeni</font>
    <font color="#434f54">// &nbsp;&nbsp;doplneni textu do testu horeni</font>
    <font color="#434f54">// &nbsp;&nbsp;oprava textu zprav</font>
    <font color="#434f54">// &nbsp;&nbsp;zruseni diakritiky</font>
    <font color="#434f54">// &nbsp;&nbsp;zapnuti alarmu pri vyskytu poruchy</font>
    <font color="#434f54">// v20_3_2016</font>
    <font color="#434f54">// &nbsp;&nbsp;slouceni podminenych funkci &nbsp;</font>
    <font color="#434f54">// &nbsp;&nbsp;vypnuti zhaveni pri rozepnuti termostatu (kotlovy nebo prostorovy)</font>
    <font color="#434f54">// &nbsp;&nbsp;rozdeleni funkci do vlastnich funkcnich bloku</font>
    <font color="#434f54">// &nbsp;&nbsp;zapojeni seriove komunikace pro odladeni funkci </font>
    <font color="#434f54">// v16_3_2016</font>
    <font color="#434f54">// &nbsp;&nbsp;uprava podminky smycek (zruseno =)</font>
    <font color="#434f54">// &nbsp;&nbsp;posun zpozdeni 5s z procesu zapaleni na jeho konec</font>
    <font color="#434f54">// &nbsp;&nbsp;doplnena podminka reakce na termostaty (kotlovy/prostorovy) v procesu zapaleni</font>
    <font color="#434f54">// &nbsp;&nbsp;upravena doba na 1 zapalovaci proces - nastavitelna trimrem na analog.vstupu A0. v rozsahu 60 - 600 s = 1 - 10 min. - nastaveni pouze v dobe necinosti kotle</font>
    <font color="#434f54">// &nbsp;&nbsp;nastaveni poruchy a jeji kvitance tlacitkem na pinu 9</font>
    
    <font color="#434f54">// definice poruch</font>
    <font color="#434f54">// bit &nbsp;funkce</font>
    <font color="#434f54">// 0 &nbsp;&nbsp;&nbsp;prehrati kotle pri zapalovani</font>
    <font color="#434f54">// 1 &nbsp;&nbsp;&nbsp;ztrata plamene pri horeni</font>
    <font color="#434f54">// 2 &nbsp;&nbsp;&nbsp;volne</font>
    <font color="#434f54">// 3 &nbsp;&nbsp;&nbsp;volne</font>
    <font color="#434f54">// 4 &nbsp;&nbsp;&nbsp;volne</font>
    <font color="#434f54">// 5 &nbsp;&nbsp;&nbsp;volne</font>
    <font color="#434f54">// 6 &nbsp;&nbsp;&nbsp;volne</font>
    <font color="#434f54">// 7 &nbsp;&nbsp;&nbsp;volne</font>
    
    <font color="#434f54">// knihovna watchdogu</font>
    <font color="#5e6d03">#include</font> <font color="#434f54"><</font><font color="#000000">avr</font><font color="#434f54">/</font><font color="#000000">wdt</font><font color="#434f54">.</font><font color="#000000">h</font><font color="#434f54">></font>
    
    <font color="#5e6d03">#define</font> <font color="#000000">davkovaniPelet</font> <font color="#000000">2</font> <font color="#434f54">//davkovani pelet snek</font>
    <font color="#5e6d03">#define</font> <font color="#000000">spirala</font> <font color="#000000">3</font> <font color="#434f54">//zapalovaci spirala</font>
    <font color="#5e6d03">#define</font> <font color="#000000">ventilator</font> <font color="#000000">5</font> <font color="#434f54">//ventilator</font>
    <font color="#5e6d03">#define</font> <font color="#000000">alarm</font> <font color="#000000">6</font> <font color="#434f54">//signalizace poruchy</font>
    <font color="#5e6d03">#define</font> <font color="#000000">prostorovyTermostat</font> <font color="#000000">7</font> <font color="#434f54">//prostorovy termostat</font>
    <font color="#5e6d03">#define</font> <font color="#000000">kotlovyTermostat</font> <font color="#000000">8</font> <font color="#434f54">//kotlovy termostat</font>
    <font color="#5e6d03">#define</font> <font color="#000000">fotobunka</font> <font color="#000000">15</font> <font color="#434f54">//fotobunka pro kontrolu plamene DI15 = A1 pro arduino UNO</font>
    <font color="#5e6d03">#define</font> <font color="#000000">trimr1</font> <font color="#000000">14</font> <font color="#434f54">// nastaveni doby zapaleni &nbsp;DI14 = A0 pro arduino UNO</font>
    <font color="#5e6d03">#define</font> <font color="#000000">tlacitkoKvitance</font> <font color="#000000">9</font> <font color="#434f54">// pin tlacitka kvitance poruchy</font>
    
    <font color="#00979c">int</font> <font color="#000000">smycka1</font> <font color="#434f54">=</font> <font color="#000000">0</font><font color="#000000">;</font> <font color="#434f54">// pomocna smycka - zapaleni</font>
    <font color="#00979c">int</font> <font color="#000000">smycka1max</font> <font color="#434f54">=</font> <font color="#000000">600</font><font color="#000000">;</font> <font color="#434f54">// max.pomocne smycky - ted jiz nastavitelne trimrem na A0 60-600s</font>
    <font color="#00979c">int</font> <font color="#000000">smycka2</font> <font color="#434f54">=</font> <font color="#000000">0</font><font color="#000000">;</font> <font color="#434f54">// pomocna smycka - udrzeni horeni</font>
    <font color="#00979c">int</font> <font color="#000000">smycka2max</font> <font color="#434f54">=</font> <font color="#000000">2</font><font color="#000000">;</font> <font color="#434f54">// max.pomocne smycky</font>
    <font color="#00979c">int</font> <font color="#000000">smycka3</font> <font color="#434f54">=</font> <font color="#000000">0</font><font color="#000000">;</font> <font color="#434f54">// pomocna smycka - pocet pokusu o zapaleni</font>
    <font color="#00979c">int</font> <font color="#000000">smycka3max</font> <font color="#434f54">=</font> <font color="#000000">2</font><font color="#000000">;</font> <font color="#434f54">// max.pomocne smycky</font>
    <font color="#00979c">int</font> <font color="#000000">smycka4</font> <font color="#434f54">=</font> <font color="#000000">0</font><font color="#000000">;</font> <font color="#434f54">// pomocna smycka - davkovani zapalne davky pelet</font>
    <font color="#00979c">int</font> <font color="#000000">smycka4max</font> <font color="#434f54">=</font> <font color="#000000">110</font><font color="#000000">;</font> <font color="#434f54">// max.pomocne smycky</font>
    <font color="#00979c">int</font> <font color="#000000">smycka5</font> <font color="#434f54">=</font> <font color="#000000">0</font><font color="#000000">;</font> <font color="#434f54">// pomocna smycka - rozhoreni</font>
    <font color="#00979c">int</font> <font color="#000000">smycka5max</font> <font color="#434f54">=</font> <font color="#000000">50</font><font color="#000000">;</font> <font color="#434f54">// max.pomocne smycky</font>
    <font color="#00979c">int</font> <font color="#000000">smycka6</font> <font color="#434f54">=</font> <font color="#000000">0</font><font color="#000000">;</font> <font color="#434f54">// pomocna smycka - dohoreni</font>
    <font color="#00979c">int</font> <font color="#000000">smycka6max</font> <font color="#434f54">=</font> <font color="#000000">840</font><font color="#000000">;</font> <font color="#434f54">// max.pomocne smycky</font>
    <font color="#00979c">byte</font> <font color="#000000">porucha</font> <font color="#434f54">=</font> <font color="#000000">0</font><font color="#000000">;</font> <font color="#434f54">// promenna pro zaznam poruchy</font>
    <font color="#00979c">int</font> <font color="#000000">ldr</font> <font color="#434f54">=</font> <font color="#000000">1</font><font color="#000000">;</font> <font color="#434f54">//analogovy pin kde je pripojen fotorezistor</font>
    <font color="#00979c">int</font> <font color="#000000">ldr_value</font> <font color="#434f54">=</font> <font color="#000000">0</font><font color="#000000">;</font> <font color="#434f54">//promenna pro zaznam hodnot z fotorezistoru</font>
    
    <font color="#00979c">void</font> <font color="#5e6d03">setup</font><font color="#000000">(</font><font color="#000000">)</font> <font color="#000000">{</font>
     &nbsp;<font color="#434f54">// nastav seriovou komunikaci na rychlost 9600 bd </font>
     &nbsp;<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">begin</font><font color="#000000">(</font><font color="#000000">9600</font><font color="#000000">)</font><font color="#000000">;</font>
     &nbsp;<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">println</font><font color="#000000">(</font><font color="#005c5f">"Nastavuji vstupy/vystupy"</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// ladici seriova komunikace</font>
     &nbsp;<font color="#d35400">pinMode</font><font color="#000000">(</font><font color="#000000">davkovaniPelet</font><font color="#434f54">,</font> <font color="#00979c">OUTPUT</font><font color="#000000">)</font><font color="#000000">;</font>
     &nbsp;<font color="#d35400">pinMode</font><font color="#000000">(</font><font color="#000000">spirala</font><font color="#434f54">,</font> <font color="#00979c">OUTPUT</font><font color="#000000">)</font><font color="#000000">;</font>
     &nbsp;<font color="#d35400">pinMode</font><font color="#000000">(</font><font color="#000000">ventilator</font><font color="#434f54">,</font> <font color="#00979c">OUTPUT</font><font color="#000000">)</font><font color="#000000">;</font>
     &nbsp;<font color="#d35400">pinMode</font><font color="#000000">(</font><font color="#000000">alarm</font><font color="#434f54">,</font> <font color="#00979c">OUTPUT</font><font color="#000000">)</font><font color="#000000">;</font>
     &nbsp;<font color="#d35400">pinMode</font><font color="#000000">(</font><font color="#000000">prostorovyTermostat</font><font color="#434f54">,</font> <font color="#00979c">INPUT</font><font color="#000000">)</font><font color="#000000">;</font>
     &nbsp;<font color="#d35400">pinMode</font><font color="#000000">(</font><font color="#000000">kotlovyTermostat</font><font color="#434f54">,</font> <font color="#00979c">INPUT</font><font color="#000000">)</font><font color="#000000">;</font>
     &nbsp;<font color="#d35400">pinMode</font><font color="#000000">(</font><font color="#000000">fotobunka</font><font color="#434f54">,</font> <font color="#00979c">INPUT</font><font color="#000000">)</font><font color="#000000">;</font>
     &nbsp;<font color="#d35400">pinMode</font><font color="#000000">(</font><font color="#000000">trimr1</font><font color="#434f54">,</font> <font color="#00979c">INPUT</font><font color="#000000">)</font><font color="#000000">;</font>
     &nbsp;<font color="#d35400">pinMode</font><font color="#000000">(</font><font color="#000000">tlacitkoKvitance</font><font color="#434f54">,</font> <font color="#00979c">INPUT</font><font color="#000000">)</font><font color="#000000">;</font>
     &nbsp;<font color="#434f54">// vsechno vypni</font>
     &nbsp;<font color="#000000">vypniVse</font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#434f54">// nastav watchdog na 8s</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">wdt_enable</font><font color="#000000">(</font><font color="#000000">WDTO_8S</font><font color="#000000">)</font><font color="#000000">;</font>
    <font color="#000000">}</font>
    
    <font color="#00979c">void</font> <font color="#5e6d03">loop</font><font color="#000000">(</font><font color="#000000">)</font> <font color="#000000">{</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">wdt_reset</font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// resetuj watchdog</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">ldr_value</font> <font color="#434f54">=</font> <font color="#d35400">analogRead</font><font color="#000000">(</font><font color="#000000">ldr</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">//čte hodnoty LDR</font>
    <b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">print</font><font color="#000000">(</font><font color="#005c5f">"HODNOTA FOTOBUNKY = "</font><font color="#000000">)</font><font color="#000000">;</font>
    <b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">println</font><font color="#000000">(</font><font color="#000000">ldr_value</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">//zobrazí hodnoty LDR na seriove lince</font>
    
     &nbsp;<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">println</font><font color="#000000">(</font><font color="#005c5f">"Cekam na sepnuti termostatu ..."</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// ladici seriova komunikace</font>
     &nbsp;<font color="#000000">smycka1max</font> <font color="#434f54">=</font> <font color="#d35400">map</font><font color="#000000">(</font><font color="#d35400">analogRead</font><font color="#000000">(</font><font color="#000000">trimr1</font><font color="#000000">)</font><font color="#434f54">,</font> <font color="#000000">0</font><font color="#434f54">,</font> <font color="#000000">1024</font><font color="#434f54">,</font> <font color="#000000">60</font><font color="#434f54">,</font> <font color="#000000">600</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// nastaveni doby zapaleni trimrem na A0</font>
     &nbsp;<font color="#5e6d03">if</font><font color="#000000">(</font><font color="#d35400">digitalRead</font><font color="#000000">(</font><font color="#000000">prostorovyTermostat</font><font color="#000000">)</font> <font color="#434f54">==</font> <font color="#00979c">HIGH</font><font color="#000000">)</font><font color="#000000">{</font> <font color="#434f54">// prostorovy termostat je zapnuty</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">println</font><font color="#000000">(</font><font color="#005c5f">"Prostorovy termostat zapnut"</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// ladici seriova komunikace</font>
     &nbsp;&nbsp;&nbsp;<font color="#5e6d03">if</font><font color="#000000">(</font><font color="#d35400">digitalRead</font><font color="#000000">(</font><font color="#000000">kotlovyTermostat</font><font color="#000000">)</font> <font color="#434f54">==</font> <font color="#00979c">HIGH</font><font color="#000000">)</font><font color="#000000">{</font> &nbsp;<font color="#434f54">// kotlovy termostat je zapnuty</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">println</font><font color="#000000">(</font><font color="#005c5f">"Kotlovy termostat zapnut"</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// ladici seriova komunikace</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#434f54">// startovaci davka pelet</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#434f54">//------------------------</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">zapalovaciDavkaPelet</font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#434f54">// proces zapaleni</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#434f54">//----------------</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">zapaleni</font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#434f54">// test poruchy</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#434f54">// -----------------</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#434f54">//testPlamene(); </font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#434f54">// udrzeni horeni</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#434f54">//--------------</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">udrzujHoreni</font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#434f54">// dohoreni</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#434f54">//---------</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">dohoreni</font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font>
     &nbsp;&nbsp;&nbsp;<font color="#000000">}</font>
     &nbsp;&nbsp;&nbsp;<font color="#000000">}</font> <font color="#5e6d03">else</font> <font color="#000000">{</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">println</font><font color="#000000">(</font><font color="#005c5f">"Prostorovy termostat vypnut"</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// ladici seriova komunikace</font>
     &nbsp;&nbsp;&nbsp;<font color="#000000">}</font>
     &nbsp;<font color="#434f54">// kvitence pripadne poruchy</font>
     &nbsp;<font color="#434f54">//-------------------------------</font>
     &nbsp;<font color="#000000">kvitancePoruchy</font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font>
    <font color="#000000">}</font>
    
    <font color="#00979c">void</font> <font color="#000000">vypniVse</font><font color="#000000">(</font><font color="#000000">)</font> <font color="#000000">{</font>
     &nbsp;<font color="#434f54">// funkce vypni vse</font>
     &nbsp;<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">println</font><font color="#000000">(</font><font color="#005c5f">"Vypinam vsechny rele ..."</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// ladici seriova komunikace</font>
     &nbsp;<font color="#d35400">digitalWrite</font><font color="#000000">(</font><font color="#000000">davkovaniPelet</font><font color="#434f54">,</font> <font color="#00979c">HIGH</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">//vypni davkovani</font>
     &nbsp;<font color="#d35400">digitalWrite</font><font color="#000000">(</font><font color="#000000">spirala</font><font color="#434f54">,</font> <font color="#00979c">HIGH</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">//vypni zhaveni</font>
     &nbsp;<font color="#d35400">digitalWrite</font><font color="#000000">(</font><font color="#000000">ventilator</font><font color="#434f54">,</font> <font color="#00979c">HIGH</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">//vypni ventilator</font>
    <font color="#000000">}</font>
    
    <font color="#00979c">void</font> <font color="#000000">zapalovaciDavkaPelet</font><font color="#000000">(</font><font color="#000000">)</font> <font color="#000000">{</font>
     &nbsp;<font color="#434f54">// prvotni davkovani pelet pro zapaleni</font>
     &nbsp;<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">println</font><font color="#000000">(</font><font color="#005c5f">"Davkuji pelety pro zapaleni ... 110s"</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// ladici seriova komunikace</font>
     &nbsp;<font color="#d35400">digitalWrite</font><font color="#000000">(</font><font color="#000000">davkovaniPelet</font><font color="#434f54">,</font> <font color="#00979c">LOW</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">//davkuj pelety</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#5e6d03">for</font> <font color="#000000">(</font><font color="#000000">smycka4</font> <font color="#434f54">=</font> <font color="#000000">0</font><font color="#000000">;</font> &nbsp;<font color="#000000">smycka4</font> <font color="#434f54"><</font> <font color="#000000">smycka4max</font><font color="#000000">;</font> <font color="#000000">smycka4</font> <font color="#434f54">++</font><font color="#000000">)</font><font color="#000000">{</font>
     &nbsp;&nbsp;&nbsp;<font color="#d35400">delay</font><font color="#000000">(</font><font color="#000000">1000</font><font color="#000000">)</font><font color="#000000">;</font> 
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">wdt_reset</font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// resetuj watchdog</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">}</font>
     &nbsp;<font color="#d35400">digitalWrite</font><font color="#000000">(</font><font color="#000000">davkovaniPelet</font><font color="#434f54">,</font> <font color="#00979c">HIGH</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">//potom vypni davkovani</font>
     &nbsp;<font color="#d35400">digitalWrite</font><font color="#000000">(</font><font color="#000000">ventilator</font><font color="#434f54">,</font> <font color="#00979c">LOW</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">//zapni ventilator</font>
     &nbsp;<font color="#d35400">digitalWrite</font><font color="#000000">(</font><font color="#000000">spirala</font><font color="#434f54">,</font> <font color="#00979c">LOW</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">//zapni zhaveni</font>
    <font color="#000000">}</font>
    
    <font color="#00979c">void</font> <font color="#000000">zapaleni</font><font color="#000000">(</font><font color="#000000">)</font> <font color="#000000">{</font>
     &nbsp;<font color="#434f54">// funkce zapaleni pelet</font>
     &nbsp;<font color="#434f54">// 3 pokusy o zapaleni</font>
     &nbsp;<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">println</font><font color="#000000">(</font><font color="#005c5f">"Spoustim zapaleni ..."</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// ladici seriova komunikace</font>
     &nbsp;<font color="#5e6d03">for</font> <font color="#000000">(</font><font color="#000000">smycka3</font> <font color="#434f54">=</font> <font color="#000000">0</font><font color="#000000">;</font> &nbsp;<font color="#000000">smycka3</font> <font color="#434f54"><</font> <font color="#000000">smycka3max</font><font color="#000000">;</font> <font color="#000000">smycka3</font> <font color="#434f54">++</font><font color="#000000">)</font><font color="#000000">{</font>
     &nbsp;&nbsp;&nbsp;<font color="#434f54">// smycka "1-10" minut zapalovani</font>
     &nbsp;&nbsp;&nbsp;<font color="#5e6d03">for</font> <font color="#000000">(</font><font color="#000000">smycka1</font> <font color="#434f54">=</font> <font color="#000000">0</font><font color="#000000">;</font> &nbsp;<font color="#000000">smycka1</font> <font color="#434f54"><</font> <font color="#000000">smycka1max</font><font color="#000000">;</font> <font color="#000000">smycka1</font> <font color="#434f54">++</font><font color="#000000">)</font><font color="#000000">{</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">wdt_reset</font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// resetuj watchdog</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">print</font><font color="#000000">(</font><font color="#005c5f">"Pokus "</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// ladici seriova komunikace</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">print</font><font color="#000000">(</font><font color="#000000">smycka3</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// ladici seriova komunikace</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">print</font><font color="#000000">(</font><font color="#005c5f">"/"</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// ladici seriova komunikace</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">print</font><font color="#000000">(</font><font color="#000000">smycka3max</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// ladici seriova komunikace</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">print</font><font color="#000000">(</font><font color="#005c5f">" stav: "</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// ladici seriova komunikace</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">print</font><font color="#000000">(</font><font color="#000000">smycka1</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// ladici seriova komunikace</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">print</font><font color="#000000">(</font><font color="#005c5f">"s/"</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// ladici seriova komunikace</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">print</font><font color="#000000">(</font><font color="#000000">smycka1max</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// ladici seriova komunikace</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">println</font><font color="#000000">(</font><font color="#005c5f">"s "</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// ladici seriova komunikace</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#5e6d03">if</font><font color="#000000">(</font><font color="#d35400">digitalRead</font><font color="#000000">(</font><font color="#000000">kotlovyTermostat</font><font color="#000000">)</font> <font color="#434f54">==</font> <font color="#00979c">LOW</font><font color="#000000">)</font><font color="#000000">{</font> <font color="#434f54">// kotlovy termostat vypne</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#d35400">digitalWrite</font><font color="#000000">(</font><font color="#000000">spirala</font><font color="#434f54">,</font> <font color="#00979c">HIGH</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">//vypni zhaveni</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">smycka1</font> <font color="#434f54">=</font> <font color="#000000">smycka1max</font><font color="#000000">;</font> <font color="#434f54">// ukonci smycku1</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">smycka3</font> <font color="#434f54">=</font> <font color="#000000">smycka3max</font><font color="#000000">;</font> <font color="#434f54">// ukonci smycku3</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">println</font><font color="#000000">(</font><font color="#005c5f">"Rozepnuti termostatu ..."</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// ladici seriova komunikace</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#d35400">bitSet</font><font color="#000000">(</font><font color="#000000">porucha</font><font color="#434f54">,</font><font color="#000000">0</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// nastav poruchu bit c.0 na "1"</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">}</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#5e6d03">if</font><font color="#000000">(</font><font color="#d35400">analogRead</font><font color="#000000">(</font><font color="#000000">fotobunka</font><font color="#000000">)</font> <font color="#434f54"><=</font> <font color="#000000">500</font><font color="#000000">)</font><font color="#000000">{</font> <font color="#434f54">//pokud fotobunka vidi plamen</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#d35400">digitalWrite</font><font color="#000000">(</font><font color="#000000">spirala</font><font color="#434f54">,</font> <font color="#00979c">HIGH</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">//vypni zhaveni</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">smycka1</font> <font color="#434f54">=</font> <font color="#000000">smycka1max</font><font color="#000000">;</font> <font color="#434f54">// ukonci smycku1</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">smycka3</font> <font color="#434f54">=</font> <font color="#000000">smycka3max</font><font color="#000000">;</font> <font color="#434f54">// ukonci smycku3 </font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">println</font><font color="#000000">(</font><font color="#005c5f">" hori ..."</font><font color="#000000">)</font><font color="#000000">;</font> &nbsp;&nbsp;<font color="#434f54">// ladici seriova komunikace &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">}</font> <font color="#5e6d03">else</font> <font color="#000000">{</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">println</font><font color="#000000">(</font><font color="#005c5f">" nehori ..."</font><font color="#000000">)</font><font color="#000000">;</font> &nbsp;&nbsp;<font color="#434f54">// ladici seriova komunikace </font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">}</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#d35400">delay</font><font color="#000000">(</font><font color="#000000">1000</font><font color="#000000">)</font><font color="#000000">;</font>
     &nbsp;&nbsp;&nbsp;<font color="#000000">}</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#5e6d03">for</font> <font color="#000000">(</font><font color="#000000">smycka5</font> <font color="#434f54">=</font> <font color="#000000">0</font><font color="#000000">;</font> &nbsp;<font color="#000000">smycka5</font> <font color="#434f54"><</font> <font color="#000000">smycka5max</font><font color="#000000">;</font> <font color="#000000">smycka5</font> <font color="#434f54">++</font><font color="#000000">)</font><font color="#000000">{</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#d35400">delay</font><font color="#000000">(</font><font color="#000000">1000</font><font color="#000000">)</font><font color="#000000">;</font> 
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">wdt_reset</font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// resetuj watchdog</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">}</font>
     &nbsp;&nbsp;&nbsp;<font color="#434f54">//delay(5000); //cekej 5s</font>
     &nbsp;<font color="#000000">}</font>
    <font color="#000000">}</font>
    
    <font color="#00979c">void</font> <font color="#000000">udrzujHoreni</font><font color="#000000">(</font><font color="#000000">)</font> <font color="#000000">{</font>
     &nbsp;<font color="#434f54">// funkce udrzeni horeni</font>
     &nbsp;<font color="#000000">ldr_value</font> <font color="#434f54">=</font> <font color="#d35400">analogRead</font><font color="#000000">(</font><font color="#000000">ldr</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">//čte hodnoty LDR</font>
     &nbsp;<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">print</font><font color="#000000">(</font><font color="#005c5f">"HODNOTA FOTOBUNKY = "</font><font color="#000000">)</font><font color="#000000">;</font>
     &nbsp;<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">println</font><font color="#000000">(</font><font color="#000000">ldr_value</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">//zobrazí hodnoty LDR na seriove lince</font>
     &nbsp;<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">println</font><font color="#000000">(</font><font color="#005c5f">"Udrzeni horeni ..."</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// ladici seriova komunikace</font>
     &nbsp;<font color="#5e6d03">for</font> <font color="#000000">(</font><font color="#000000">smycka2</font> <font color="#434f54">=</font> <font color="#000000">0</font><font color="#000000">;</font> &nbsp;<font color="#000000">smycka2</font> <font color="#434f54"><</font> <font color="#000000">smycka2max</font><font color="#000000">;</font> <font color="#000000">smycka2</font> <font color="#434f54">++</font><font color="#000000">)</font><font color="#000000">{</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">wdt_reset</font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// resetuj watchdog</font>
     &nbsp;&nbsp;&nbsp;<font color="#000000">smycka2</font> <font color="#434f54">=</font> <font color="#000000">0</font><font color="#000000">;</font> <font color="#434f54">// vynuluj smycku</font>
     &nbsp;&nbsp;&nbsp;<font color="#5e6d03">if</font><font color="#000000">(</font><font color="#d35400">digitalRead</font><font color="#000000">(</font><font color="#000000">prostorovyTermostat</font><font color="#000000">)</font> <font color="#434f54">==</font> <font color="#00979c">HIGH</font> &nbsp;<font color="#434f54">&&</font> <font color="#d35400">digitalRead</font><font color="#000000">(</font><font color="#000000">kotlovyTermostat</font><font color="#000000">)</font> <font color="#434f54">==</font> <font color="#00979c">HIGH</font><font color="#000000">)</font><font color="#000000">{</font> <font color="#434f54">// prostorovy + kotlovy termostat je zapnuty</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#5e6d03">if</font><font color="#000000">(</font><font color="#d35400">analogRead</font><font color="#000000">(</font><font color="#000000">fotobunka</font><font color="#000000">)</font> <font color="#434f54"><=</font> <font color="#000000">500</font><font color="#000000">)</font><font color="#000000">{</font> <font color="#434f54">//pokud fotobunka vidi plamen</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">println</font><font color="#000000">(</font><font color="#005c5f">"Test plamene ... hori"</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// ladici seriova komunikace</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#d35400">digitalWrite</font><font color="#000000">(</font><font color="#000000">davkovaniPelet</font><font color="#434f54">,</font> <font color="#00979c">LOW</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">//davkuj pelety</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#d35400">delay</font><font color="#000000">(</font><font color="#000000">8000</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">//pockej 8s</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#d35400">digitalWrite</font><font color="#000000">(</font><font color="#000000">davkovaniPelet</font><font color="#434f54">,</font> <font color="#00979c">HIGH</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">//vypni davkovani</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#d35400">delay</font><font color="#000000">(</font><font color="#000000">10000</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">//pockej 10s</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">}</font> <font color="#5e6d03">else</font> <font color="#000000">{</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#d35400">delay</font><font color="#000000">(</font><font color="#000000">1000</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// pocekej jeste 1s a zkus to znovu</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#5e6d03">if</font><font color="#000000">(</font><font color="#d35400">analogRead</font><font color="#000000">(</font><font color="#000000">fotobunka</font><font color="#000000">)</font> <font color="#434f54">>=</font> <font color="#000000">500</font><font color="#000000">)</font><font color="#000000">{</font> &nbsp;<font color="#434f54">//pokud fotobunka nevidi plamen</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">println</font><font color="#000000">(</font><font color="#005c5f">"Test plamene ... porucha"</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// ladici seriova komunikace</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">smycka2</font> <font color="#434f54">=</font> <font color="#000000">smycka2max</font><font color="#000000">;</font> <font color="#434f54">// ukonci smycku</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#434f54">//porucha = 1; // nastav poruchu</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#d35400">bitSet</font><font color="#000000">(</font><font color="#000000">porucha</font><font color="#434f54">,</font><font color="#000000">1</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// nastav poruchu bit c.1 na "1"</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#d35400">digitalWrite</font><font color="#000000">(</font><font color="#000000">alarm</font><font color="#434f54">,</font> <font color="#00979c">LOW</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// zapni alarm</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">}</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">}</font>
     &nbsp;&nbsp;&nbsp;<font color="#000000">}</font> <font color="#5e6d03">else</font> <font color="#000000">{</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">smycka2</font> <font color="#434f54">=</font> <font color="#000000">smycka2max</font><font color="#000000">;</font> <font color="#434f54">// ukonci smycku</font>
     &nbsp;&nbsp;&nbsp;<font color="#000000">}</font> &nbsp;
     &nbsp;<font color="#000000">}</font>
    <font color="#000000">}</font>
    
    <font color="#00979c">void</font> <font color="#000000">dohoreni</font><font color="#000000">(</font><font color="#000000">)</font> <font color="#000000">{</font>
     &nbsp;<font color="#434f54">// funkce dohoreni</font>
     &nbsp;<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">println</font><font color="#000000">(</font><font color="#005c5f">"Dohoreni ..."</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// ladici seriova komunikace</font>
     &nbsp;<font color="#d35400">digitalWrite</font><font color="#000000">(</font><font color="#000000">davkovaniPelet</font><font color="#434f54">,</font> <font color="#00979c">HIGH</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">//vypni davkovani pelet</font>
     &nbsp;<font color="#d35400">digitalWrite</font><font color="#000000">(</font><font color="#000000">spirala</font><font color="#434f54">,</font> <font color="#00979c">HIGH</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">//vypni zhaveni - pro jistotu</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#5e6d03">for</font> <font color="#000000">(</font><font color="#000000">smycka6</font> <font color="#434f54">=</font> <font color="#000000">0</font><font color="#000000">;</font> &nbsp;<font color="#000000">smycka6</font> <font color="#434f54"><</font> <font color="#000000">smycka6max</font><font color="#000000">;</font> <font color="#000000">smycka6</font> <font color="#434f54">++</font><font color="#000000">)</font><font color="#000000">{</font>
     &nbsp;&nbsp;&nbsp;<font color="#d35400">delay</font><font color="#000000">(</font><font color="#000000">1000</font><font color="#000000">)</font><font color="#000000">;</font> 
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">wdt_reset</font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// resetuj watchdog</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">}</font>
     &nbsp;<font color="#d35400">digitalWrite</font><font color="#000000">(</font><font color="#000000">ventilator</font><font color="#434f54">,</font> <font color="#00979c">HIGH</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">//vypni ventilator</font>
    <font color="#000000">}</font>
    
    <font color="#00979c">void</font> <font color="#000000">kvitancePoruchy</font><font color="#000000">(</font><font color="#000000">)</font> <font color="#000000">{</font>
     &nbsp;<font color="#434f54">// funkce kvitance poruchy</font>
     &nbsp;
     &nbsp;<font color="#5e6d03">if</font><font color="#000000">(</font><font color="#000000">porucha</font> <font color="#434f54">></font> <font color="#000000">0</font> <font color="#000000">)</font><font color="#000000">{</font> <font color="#434f54">// kdyz je porucha aktivni</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">println</font><font color="#000000">(</font><font color="#005c5f">"Kvitance poruchy ..."</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// ladici seriova komunikace</font>
     &nbsp;&nbsp;&nbsp;<font color="#434f54">// vypni vse</font>
     &nbsp;&nbsp;&nbsp;<font color="#000000">vypniVse</font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font>
     &nbsp;&nbsp;&nbsp;<font color="#5e6d03">while</font> <font color="#000000">(</font><font color="#d35400">digitalRead</font><font color="#000000">(</font><font color="#000000">tlacitkoKvitance</font><font color="#000000">)</font> <font color="#434f54">==</font> <font color="#00979c">LOW</font><font color="#000000">)</font> <font color="#000000">{</font> <font color="#434f54">// zapni alarm a cekej na stisk tlacitka</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#d35400">digitalWrite</font><font color="#000000">(</font><font color="#000000">alarm</font><font color="#434f54">,</font> <font color="#00979c">LOW</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// zapni alarm</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">println</font><font color="#000000">(</font><font color="#005c5f">"Porucha ... cekam na kvitanci"</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// ladici seriova komunikace</font>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">wdt_reset</font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// resetuj watchdog</font>
     &nbsp;&nbsp;&nbsp;<font color="#000000">}</font>
     &nbsp;&nbsp;&nbsp;<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">println</font><font color="#000000">(</font><font color="#005c5f">"Porucha kvitovana ..."</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// ladici seriova komunikace</font>
     &nbsp;&nbsp;&nbsp;<font color="#d35400">digitalWrite</font><font color="#000000">(</font><font color="#000000">alarm</font><font color="#434f54">,</font> <font color="#00979c">HIGH</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// vypni alarm</font>
     &nbsp;&nbsp;&nbsp;<font color="#000000">porucha</font> <font color="#434f54">=</font> <font color="#000000">0</font><font color="#000000">;</font> <font color="#434f54">// vynuluj poruchu</font>
     &nbsp;<font color="#000000">}</font> <font color="#5e6d03">else</font> <font color="#000000">{</font> &nbsp;<font color="#434f54">// jinak </font>
     &nbsp;&nbsp;&nbsp;<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">println</font><font color="#000000">(</font><font color="#005c5f">"Zadna porucha &nbsp;..."</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// ladici seriova komunikace</font>
     &nbsp;&nbsp;&nbsp;<font color="#d35400">digitalWrite</font><font color="#000000">(</font><font color="#000000">alarm</font><font color="#434f54">,</font> <font color="#00979c">HIGH</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// vypni alarm</font>
    <font color="#000000">}</font>
    <font color="#000000">}</font>
    
    </pre>
    

    Díky moc!

    odpověď na: Ovládání klimatizace #9095
    Vojtěch Vosáhlo
    Účastník

    Ještě tak mimochodem co je to za klimošku? Předpokládám že cíl je nepájet přímo na ni ani na ovladač. To že je tam 0 znamená že to nevysílá v žádném známém formátu. Chtělo by to její název a pak se dá třeba kouknout i po nějakejch projektech, jestli nedělal někdo reverse engineering…
    To pane si prosím nechte 😀

    odpověď na: Ovládání klimatizace #9091
    Pulec
    Účastník

    Zjistil jsem že duležitý je pro mne první řádek ale ten je bohužel bez hodnot.
    Decoded Unknown(0): Value:0 (0 bits)

    Při testu ovladače settopboxu je vše jak má.
    Decoded NEC(1): Value:FD6897 (32 bits)
    Bohužel tedy z ovladače klimatizace nedostanu tyto hodnoty.
    Co stím?Zadávat tedy ty dlouhé kódy raw?S nimi to funguje ale je to hrozná práce.

    Attachments:
    odpověď na: Ovládání klimatizace #9089
    Pulec
    Účastník

    Omlouvám se ale nějak blbne odesílání zpráv.

    Attachments:
    odpověď na: Ovládání klimatizace #9087
    Pulec
    Účastník

    Moc děkuji pane Vosáhlo.Tady je výsledek.Co stoho je k použití?Viz příloha
    V čem jsem to měl spustit v IRrecvDumpV2?
    Děkuji za pomoc

    Attachments:
    odpověď na: Altimetr pro raketové modeláře #9086
    Vojtěch Vosáhlo
    Účastník

    Takže to shrnu, zapneme zařízení -> bude pípat v určitých intervalech že je zapnuté -> (mohla by být hezká i telemetrie přes rf ale to je na vás) -> vyletíte (manuálně, vy odpalujete) -> měříme výšku -> pokud je x metrů nad zemí vypustí 1. padák -> y metrů nad zemí, druhý padák -> pípáme extra nahlas

    Pípání je v celku jednoduché, stačí nějaký piezo měnič, kolem 100db a více (aby to bylo slyšet co nejdál) a nebo reproduktor ovládaný mosfetem.

    Na měření výšky by se dal asi použít nějaký sensor tlaku ale lepší bude například MPL3115A2 s přesností 0,3m a měří i tlak a teplotu.

    Kdyby to šlo, asi bych data ukládal na SD a nebo na extérní flash (pojištěnou baterií aby při vybití hlavní baterie nezmizela data) či eeprom ale ta má omezený počet zápisů.

    Jako bonus můžete přidávat sensory – akcelerometr, teplota, tlak, vlhkost, gps…

    Ať se to povede 😉

    odpověď na: Altimetr pro raketové modeláře #9084
    Dekmen
    Účastník

    Nejdou mi vložit obrázky

    Attachments:
    odpověď na: Ovládání klimatizace #9080
    Vojtěch Vosáhlo
    Účastník

    Zkusme něco jiného, například tuhle knihovnu: https://learn.adafruit.com/using-an-infrared-library/hardware-needed, ta vypisuje i kód ve formáru co by jsme chtěli.

    odpověď na: Ovládání klimatizace #9079
    Pulec
    Účastník

    Bohužel nejsem schopen dostat z ovladače klimatizace kód v tomto tvaru 0xFDD827.Ten pak stačí v kódu programu?
    Tento se mi daří získat pouze z ovladače na settopbox.Vše je zjištěno přes IRrecvDumpV2.

    odpověď na: Ovládání klimatizace #9077
    Pulec
    Účastník

    Dobrý den.Nejsou mi jasné ty kódy ovladače.V příloze posílám kódy získané megou přez ir přijímač.Je to postupně z 18,19,20,21,22 čili pořád směrem nahoru.Neřekl bych že se kód opakuje.Nebo ano?Musí se používat celá řada čísel?Děkuji za ujasnění

    Attachments:
    odpověď na: Ovládání klimatizace #9076
    darira
    Účastník
    odpověď na: Ovládání klimatizace #9075
    Vojtěch Vosáhlo
    Účastník

    Předpokládám že ten ovladač má šipky nahoru a dolu pro zvýšení a snížení teploty a nějaká další tlačítka. Pokud tedy opravdu při stisku tlačítka nahoru pošle vždy jiný kód, což mi přijde trochu jako hovadina ale dobře, zkuste zjistit jak se číslo mění. Chce to něco podle čeho by jsme mohli ty kódy generovat aby jste je neměl jen všechny naklikané v kódu, pro každou teplotu jeden (což by taky šlo). Vyp/zap si taky vyřešíte podle kódů. Pak se dá podle protokolu ve kterém IR mluví napsat odesílání kódů.

    odpověď na: Světelná závora – jaký senzor? #9074
    Bivoj
    Účastník

    Ultrazvuk v žádném případě. Jestli nechcete mít zdravotní potíže. Nejlepší je optická závora s Infra LED a infra čidla. v GM určitě mají. Pokud trochu programujete, tak doporučuji vysílat nějaký jednoduchý kód, aby jste se vyhnul falešným poplachům.

    odpověď na: Ovládání klimatizace #9073
    Pulec
    Účastník

    Tak změna.Megu mám doma dnes došla.Autorův kód funguje.Jen nevím jak dodělat teplota více/méně.Jak jsem zjistil každá nastavená teplota má svůj kód.Šlo by do kódu dodělat teplota více ,teplota méně?Nebo napsat kód jak pro pitomce (čili mě) úplně nový a česky.
    Jedná se mi o toto:
    Teplota a vlhkost s dht22 :to se mi podařilo
    Ovládat teplotu klimatizace vzestupně sestupně:to neumím
    Vyp/zap:neumím není duležité ale potěší

    odpověď na: Ovládání klimatizace #9072
    Luke_CZ
    Účastník

    Pro doplnění:
    A, jde o přeplnění SRAM paměti vloženými obrázky a HTML kódem, autor skriptu řeší vše pouze v rámci SRAM. V jeho případě je to MEGA s 8kB SRAM vs tvoje UNO s 2kB SRAM 🙁

    Toto jde řešit:
    1, větším arduinem, přístup autora = s kanonem na vrabce
    2, nahráním obrázků na SD a loadovat je z ní = v případě opravdu velkých obrázků, či skriptů (java apod)
    3, místo obrázků použít tag <button>, ten tolik paměti nezabere viz.
    http://www.w3schools.com/tags/tag_button.asp
    4, celkově optimalizovat zápis HTML viz F() macro
    https://playground.arduino.cc/Learning/Memory
    a PROGMEM
    https://www.arduino.cc/en/Reference/PROGMEM

    L.

    odpověď na: Ovládání klimatizace #9071
    Luke_CZ
    Účastník

    A, nerozumím
    B, mega != wifi
    C, „Učit se, učit se, učit se! VIL“
    D, ESP8266 zvládne vše, tj. server, měření teploty a vlhkosti i ovládání IR

    L:

    odpověď na: Ovládání klimatizace #9070
    Pulec
    Účastník

    A.Píše to málo proměné
    B.wifi je objednané
    C.pro mě moc ne
    Nevím jestly si rozumíme ale na arduinu beží server a přes vebowé rozhraní ovládám klimu.Arduino je osazeno ir diodou.

    odpověď na: Ovládání klimatizace #9069
    Luke_CZ
    Účastník

    A, proč by to normální arduino nezvládlo?
    B, nemáš možnost WiFi? ESP8266(NodeMcu) by bylo ideální, napájet by šlo rovnou v klimě a nikde by nelezly dráty
    C, kód je jednoduchý

    L.

    odpověď na: Ovládání klimatizace #9067
    Pulec
    Účastník

    Ano to jsem našel bohužel to je na megu arduino to nezvládne.Na megu čekám je objednaná.Mám ir přijímač a ir vysílač a uno.Chtěl bych jen zvýšení a snížení teploty klimatizace po ethernet.Kodý ovladače od klimi mám načtené.Dokázal by někdo napsat kód?Podobný tomu v odkazu víše.
    Ale jen pro zvýšení a snížení teploty.Moc děkuji za jakoukoliv pomoc.

    odpověď na: Ground a tft lcd obrazovka #9065
    darira
    Účastník

    Nebo si udělej plošňák – takový mezi shield. Z jedné strany patice samce na které nasuneš arduino. Na plošným spoji si vyvedeš co potřebuješ, pro vývod senzorů mám šroubovací patice. Ze spodní strany dáš patice samice na které zasuneš shield pro LCD nebo co tam máš (já tam mám RTC + LCD shield od Elecfreaks). Po otevření krabice je arduino dobře přístupné, můžeš kdykoliv vytáhnout a nahradit jinou deskou.

    Attachments:
    odpověď na: Ground a tft lcd obrazovka #9064
    Aleš
    Účastník
Aktuálně je na stránce zobrazeno 30 příspěvků - 1,351. až 1,380. (celkem z 2,760)