Close

johnyhol

Vytvořené odpovědi

Aktuálně je na stránce zobrazeno 27 příspěvků - 31. až 57. (celkem z 57)
  • Autor
    Příspěvky
  • 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: Řídící jednotka pro peletový kotel #6510
    johnyhol
    Účastník

    Tak to je přesně to co bych si představoval! moc díky za tip!

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

    O displayi jsem už taky přemýšlel, ale nakonec jsem se rozhodl pro ethernet schield, protože bych chtěl časem sledovat stav kotle (případně i nastavovat) a taky teplotu v místnostech (nebo aspoň v obýváku) po síti a nejlépe i v mobilu s androidem. Půjde to? Úplně nejlepší by byla jednoduchá webová stránka, kde by se vypisovalo co zrovna kotel dělá a taky by tam bylo tlačítko pro zapnutí kotle na dálku v případě, že budeme někde na cestách, v baráku bude zima a budeme si chtít zatopit než přijedeme domů.

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

    Tady upravený kód:

    
    // REGULACE PELETKOVEHO KOTLE
    // author. Johnyhol & by JP
    // v 30_3_2016
    
    // changelog
    // 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 6 //davkovani pelet snek
    #define spirala 5 //zapalovaci spirala
    #define ventilator 3 //ventilator
    #define alarm 10 //signalizace poruchy
    #define prostorovyTermostat 12 //prostorovy termostat
    #define kotlovyTermostat 2 //kotlovy termostat
    #define fotobunka 8 //fotobunka pro kontrolu plamene
    #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 A1 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 = 12; // max.pomocne smycky
    int smycka5 = 0; // pomocna smycka - rozhoreni
    int smycka5max = 5; // max.pomocne smycky
    int smycka6 = 0; // pomocna smycka - dohoreni
    int smycka6max = 84; // max.pomocne smycky
    byte porucha = 0; // promenna pro zaznam poruchy
    
    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
      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, LOW); //vypni davkovani
      digitalWrite(spirala, LOW); //vypni zhaveni
      digitalWrite(ventilator, LOW); //vypni ventilator
    }
    
    void zapalovaciDavkaPelet() {
      // prvotni davkovani pelet pro zapaleni
      Serial.println("Davkuji pelety pro zapaleni ... 12s"); // ladici seriova komunikace
      digitalWrite(davkovaniPelet, HIGH); //davkuj pelety
            for (smycka4 = 0;  smycka4 < smycka4max; smycka4 ++){
        delay(1000); 
              wdt_reset(); // resetuj watchdog
            }
      digitalWrite(davkovaniPelet, LOW); //potom vypni davkovani
      digitalWrite(ventilator, HIGH); //zapni ventilator
      digitalWrite(spirala, HIGH); //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, LOW); //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(digitalRead(fotobunka) == HIGH){ //pokud fotobunka vidi plamen
            digitalWrite(spirala, LOW); //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
      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(digitalRead(fotobunka) == HIGH){ //pokud fotobunka vidi plamen
                      Serial.println("Test plamene ... hori"); // ladici seriova komunikace
            digitalWrite(davkovaniPelet, HIGH); //davkuj pelety
            delay(1000); //pockej 1s
            digitalWrite(davkovaniPelet, LOW); //vypni davkovani
            delay(1000); //pockej 1s
          } else {
            delay(1000); // pocekej jeste 1s a zkus to znovu
            if(digitalRead(fotobunka) == LOW){  //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, HIGH); // zapni alarm
            }
          }
        } else {
          smycka2 = smycka2max; // ukonci smycku
        }  
      }
    }
    
    void dohoreni() {
      // funkce dohoreni
      Serial.println("Dohoreni ..."); // ladici seriova komunikace
      digitalWrite(davkovaniPelet, LOW); //vypni davkovani pelet
      digitalWrite(spirala, LOW); //vypni zhaveni - pro jistotu
            for (smycka6 = 0;  smycka6 < smycka6max; smycka6 ++){
        delay(1000); 
              wdt_reset(); // resetuj watchdog
            }
      digitalWrite(ventilator, LOW); //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, HIGH); // zapni alarm
          Serial.println("Porucha ... cekam na kvitanci"); // ladici seriova komunikace
                            wdt_reset(); // resetuj watchdog
        }
        Serial.println("Porucha kvitovana ..."); // ladici seriova komunikace
        digitalWrite(alarm, LOW); // vypni alarm
        porucha = 0; // vynuluj poruchu
      } else {  // jinak 
        Serial.println("Zadna porucha  ..."); // ladici seriova komunikace
        digitalWrite(alarm, LOW); // vypni alarm
    }
    }
    
    
    odpověď na: Řídící jednotka pro peletový kotel #6485
    johnyhol
    Účastník

    Ahoj, tak teď už je to kód jako v Temelíně 🙂 Jinak jsem to zkoušel a po drobný úpravě už to vypadá dobře. Musel jsem ještě změnit hodnotu u kvitace poruchy, přesně tady: while (digitalRead(tlacitkoKvitance) == HIGH) { // zapni alarm a cekej na stisk tlacitka z hodnoty „HIGH“ na hodnotu „LOW“, protože to reagovalo na tlačítko poruchy obráceně. (+ jsem tam udělal ještě pár úprav, upravený kód přiložím později) Všiml jsem si toho, když už jsem byl bezradnej (pořád nefungovala porucha) a tak jsem to komplet všechno rozpojil a znovu zapojil podle simulátoru, ale stejně to nešlo. Taky jsem si všiml, že tam máš tlačítka (spínače) zapojený obráceně (jako imput_pullup), jenom jsem si toho předtím vůbec nevšiml, protože tam máš i odpory. (sice ne proti zemi, ale proti plusu) Sériová komunikace je taky v pohodě, jenom bych ještě uvítal, kdyby běžel při každý akci čas (odpočet) jako je to při pokusu o zapálení. Časování u zapalování už taky funguje korektně 1-10min.

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

    No mělo by to prakticky reagovat jenom na prostorák. Kotlový termostat vypne pouze, když je teplota kotle vyšší než cca. 85°, takže je to během zapalování vyloučený. (proces zapalování začíná cca. při 75°)

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

    Tak jsem na to koukal a mám to přesně tak zapojený jako je to tam. Je zajímavý, že tam ta ztráta plamene funguje tak jak jsem požadoval: vypne dávkování, zapne/ohlásí to poruchu a doběhne ventilátor. Po stisknutí tlačítka to opět normálně naběhne. (tzn. začne proces zapalování) Ty už jsi s tím něco dělal? Jinak ten bod tři z posledního příspěvku je i tam stejný jak píšu v předešlým příspěvku. Jo a jak píšeš, že když kliknu na součástku tak se ukáže popis, tak to nefunguje, ale to nevadí, dá se v tom v pohodě vyznat.

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

    Zdravím, tak jsem to vyzkoušel a poznatky jsou následující:
    1) test zapálení, rozhoření, hoření, vypnutí jednoho z termostatů, dohoření -> OK
    2) test ztráty plamene během hoření -> tady je něco špatně. Pokud fotobuňka nevidí plamen, tak správně vypne dávkování pelet, ale potom běží čas na dohoření 84s a až pak to začne znovu dávkovat pelety a začne nový pokus o zapálení (respektive dva a pak to jede od znova pořád dokola) a hlavně to nesignalizuje chybu „Alarm“ na výstupu 10 – tady bych to řešil pouze vypnutím dávkování, mohl by ještě doběhnout ventilátor a pak by to zapnulo/ohlásilo poruchu. Jak jsem psal už dřív, tak se tato situace stává pouze když dojdou pelety, proto bych se tím zbytečně moc nezabýval.
    3) test vypnutí termostatu během zapalování -> vypne to spirálu a začne běžet dohoření. Taky bych to trochu poopravil, aby to nechalo žhavit po nastavenou maximální dobu (10min.), nebo pokud to nezapálí a pak aby to dalo řekněme dvě dávky paliva a začal proces dohoření. Tím by se vyřešil případný problém s kopou pelet v komoře hořáku při dalším zapálení/zapnutí termostatu.
    Díky!

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

    Takhle by to asi šlo, vyzkouším a dám vědět. Jenom u toho nastavení max. zapalovací doby mně to tak jak píšeš nefunguje. Když dám pin přímo na zem tak to běží cca. 3,5min. a když ho dám na 5V tak to běží cca. 21,5min. Takže když jsem dal 10K trimr na střed, tak mi to běželo cca. 12min a proto jsem to musel honit abych tam dostal těch požadovaných 10min.

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

    Chápu že bych to musel předělat na 5V když bych tam chtěl dát Arduino tak jak to je momentálně, ale jde mi o to jak se chová stávající zapojení. Konkrétně jestli musí být na konkrétním digitálním vstupu přesně 24V aby to vykonalo požadovanou věc, nebo jestli tam jde nastavit ať to dělá něco v případě že je na vstupu např. > 0V. Protože pokud měřím ostatní vstupy, tak tam je právě těch 24V a ani se to nehne, kdežto u fotobuňky to kolísá. Jinak pokud se nám to podaří rozchodit s Arduinem tak to plánuju stejně komplet předělat (přepojit).

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

    OK, díky!
    Ten Schneider právě nemůžu naprogramovat ani ručně, protože to má výrobce zamknutý. Dostanu se pouze do nastavení jednotlivých parametrů. (třeba jak dlouho to má sypat pelety, jakou dobu má běžet ventilátor, nebo jak dlouho má žhavit spirála) Ještě bych měl dotaz. Jak si psal, tak to má digitální vstupy 24V a do jednoho je napojená i fotobuňka. Respektive je napojená do silové jednotky a z ní pak leze do toho vstupu podle intenzity světla co vidí napětí v rozmezí 0-20V. Je to tedy tak v pořádku? Dají se nastavit ty vstupy, že reagují na určitý rozsah (hodnotu) napětí? a těch 24V je maximum co se tam dá poslat? Napadlo mě, jestli nemůže být problém v tý silový jednotce (že třeba dává menší napětí) a ta pak zblbne to program. relé.

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

    Ahoj. Tak jsem to podrobil rozsáhlým testům a poznatky jsou následující:
    1) Proces zapalování je zdá se v pořádku, včetně nastavení max. zapalovací doby trimrem (mimochodem super nápad, není to sice moc elegantní – musel jsem si s tím trochu pohrát abych tam dostal těch 10min., ale účel to splní)
    2) Zkoušel jsem simulovat během zapalování vypnutí prostoráku a tady to ještě bude chtít odladit -> po vypnutí to pořád žhaví a točí se ventilátor, ten se po 84s vypne, ale spirála žhaví dál. Hlavně to vůbec nereaguje na fotobuňku.
    3) Zkoušel jsem taky simulovat ztrátu plamene během hoření a tady je to celkem v pořádku – přestane to podávat pelety, počká to 84s, pak vypne ventilátor a začne proces zapalování -> tady by to možná chtělo řešit poruchou, protože plamen by pokud se nezasekne peleta v dopravníku, nebo nedojdou pelety neměl zhasnout nikdy.

    Ještě k tomu Schneideru. Taky jsem si původně myslel, že tomu zkusím aspoň přehrát firmware, ale jenom kabel na připojení k PC stojí cca. 2tis. Tak proto jsem se rozhodl, že to zkusím s Arduinem a aspoň se něco přiučím.

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

    Tak znova:

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

    Je tam tohle:

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

    Takže jsem udělal ten test s LEDkou a časy sedí. Tak nevím…

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

    To by asi problém byl. Průměrná doba zapálení je cca. 6min. a proč trápit spirálu bez pelet? už tak jsem jednu po cca. pěti letech měnil. V návodu k hořáku (a taky nastavení z výroby) je doba pro zapálení pelet 7min. a když to nezapálí tak se konají ještě dva kompletní procesy zapalování. (jak jsem psal dřív, tak to znamená hromadu pelet a někdy přetopení kotle) Mně se osvědčilo nastavit čas pro zapálení pelet na 10min. a tak to poměrně spolehlivě fungovalo do doby než začala blbnout řídící jednotka. Takže bych asi vyzkoušel to samý nastavit i tady a zkoušet co to udělá. Případně aby to dalo (jak navrhuješ) po uplynutí času (10min.) ještě jednu menší dávku (12s) a opakovalo pokus o zapálení. Potom už bych to řešil vypnutím a alarmem. Jinak k tomu přerušení po vypnutí prostoráku bych to viděl asi takto:
    1)pokud vypne během zapalování, tak pokračuj v procesu zapalování a po zapálení nech proběhnout řekněme 3x proces hoření (3x 10s dávkování + 10s stání), potom vypni dávkování a nech dohořet pelety (84s) a vypni ventilátor – tím se zabezpečí vyhoření zapalovací dávky pelet a zabrání se případnému přetopení kotle při dalším zapnutí
    2)pokud vypne během normálního hoření, tak to nechat jednoduše tak jak to je momentálně, vypnout dávkování a nechat dohořet pelety (84s) a potom vypnout ventilátor

    Takže asi tak, jdu zkusit tu LEDku abych zjistil ten problém s časem(respektive kde se bere těch 3,5min)

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

    No momentálně je to tak jak jsem psal v prvním příspěvku. S tím, že když vypne prostorák, tak to prostě vypne hořák a je jedno jestli to zrovna topí nebo žhaví spirála. Takže když se to snaží zapálit a vypne to, tak tam prostě zbyde halda pelet a při opětovným zapnutí se přisypou další (zapalovací dávka). Což občas nedělá dobrotu, protože je to nastavený tak, že když to napoprvé nezapálí tak se proces opakuje ještě dvakrát a pak už je tam opravdu ohromná halda a někdy se kotel přetopí až vypadne tepelná pojistka. Což není dobrý a myslím že to proto musíme udělat jinak. Takže jsem o tom přemýšlel a myslím že bych to radši udělal tak, že když v průběhu zapalování vypne prostorák, tak to ještě nechá zapálit pelety, nějaký čas to poběží aby dohořely a pak by se to normálně vypnulo. Ještě to pořádně promyslím a ozvu se. Jinak už je to téměř dokonalý!
    Díky!

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

    1) Momentálně to dělá to, že když vypne prostorový termostat, tak to vypne komplet hořák (tzn. žhavení, šneka a myslím že i ventilátor, ale to si nejsem šur – zjistím) – je to sice na prd, když to pak zase sepne prostorák tak jsou tam rázem dvě zapalovací dávky pelet, ale ty pak nějak vyhoří – zkusím se ještě zamyslet jestli by to nešlo nějak vylepšit.
    2) Nechám radši na tobě, nicméně to s tou LEDkou zkusím

    Díky!

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

    Tak jsem to tvoje dílo hodil do stroje a je to téměř dokonalý! Seš opravdu jednotka! Jelikož je to pro mně už vyšší dívčí, tak bych potřeboval ještě pár maličkostí:
    1) Pokud během procesu zapalování vypnu jeden z termostatů tak se nic neděje, resp. pořád to žhaví a běží ventilátor (ten vypne cca. po 3,5min., ale spirála žhaví dál)
    2) Proces zapalování trvá cca. 3,5min., pokud se nezapálí pelety tak se pak všechno opakuje (začne se sypat zapalovací dávka, vypne ventilátor a po zpoždění 12s se zastaví sypání a zapne ventilátor) – nechápu kde se to zpoždění (3,5min.) pořád bere? -> potřeboval bych zpoždění zapalování cca. 10min
    3) Nechápu proč je na konci smyčky „udržení hoření“ 3x po sobě „else“?

    Zatím díky moc!

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

    Ten kód jsem zkoušel vkládat do „CODE“, ale bylo to stejný jako když jsem to dal bez nich. Nějak mně to blbne, vždycky když odesílám příspěvek tak se mi to na dlouhou dobu sekne. Jinak už jsem byl z toho zoufalej, tak jsem zkoušel všechny možný kombinace až z toho vzniklo to co jsem sem vložil.

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

    Tak si myslím, že jsem se právě dostal do tý slepý uličky a nevím jak ven. Momentálně to prakticky funguje jak bych chtěl, až na to, že když doběhne celý proces (rozpojím kotlový termostat, vypne dávkování, počká 84s a vypne ventilátor) tak když chci zapnout nový (zapnu kotlový termostat) tak to už nic nedělá. Ještě je problém, že na začátku by to po 12s mělo vypnout dávkování pelet, ale to běží pořád, dokud nesimuluju plamen. Pak to přestane dávkovat, vypne to správně spirálu a začne dávkování v nastaveným intervalu (1s/1s). Taky jsem řešil to zpoždění u žhavení a zatím jsem to udělal přes funkci millis, ale to bude do budoucna taky špatně, protože to funguje jenom po startu/resetu a já budu muset mít Arduino asi pořád zapnutý.

    Tady je zatím poslední pokus:

    #define davkovaniPelet 6 //dávkování pelet – šnek
    #define spirala 5 //zapalovací spirála
    #define ventilator 3 //ventilátor
    #define alarm 10 //signalizace poruchy
    #define prostorovyTermostat 12 //prostorový termostat
    #define kotlovyTermostat 2 //kotlový termostat
    #define fotobunka 8 //fotobuňka pro kontrolu plamene
    long cas=13000;

    void setup() {
    pinMode(davkovaniPelet, OUTPUT);
    pinMode(spirala, OUTPUT);
    pinMode(ventilator, OUTPUT);
    pinMode(alarm, OUTPUT);
    pinMode(prostorovyTermostat, INPUT);
    pinMode(kotlovyTermostat, INPUT);
    pinMode(fotobunka, INPUT);
    }

    void loop() {
    if(digitalRead(prostorovyTermostat) == HIGH && digitalRead(kotlovyTermostat) == HIGH){ //pokud je prostorový+kotlový termostat zapnutý
    digitalWrite(davkovaniPelet, HIGH); //dávkuj pelety
    delay(12000); //po dobu 12s
    digitalWrite(davkovaniPelet, LOW); //potom vypni dávkování
    digitalWrite(ventilator, HIGH); //zapni ventilátor
    digitalWrite(spirala, HIGH); //zapni žhavení
    }
    if(millis() >= cas+60000){ //délka žhavení 60s po uplynutí 13s od spuštění/resetu
    cas = millis();
    digitalWrite(spirala, LOW); //po vypršení času vypni žhavení(pokud už není vypnuté)
    }
    if(digitalRead(fotobunka) == HIGH){ //pokud fotobuňka vidí plamen
    digitalWrite(spirala, LOW); //vypni žhavení
    delay(5000); //čekej 5s
    }
    while(digitalRead(fotobunka) == HIGH && digitalRead(prostorovyTermostat) == HIGH && digitalRead(kotlovyTermostat) == HIGH){ //dokud fotobuňka vidí plamen+prostorový+kotlový termostat jsou zapnuté
    digitalWrite(davkovaniPelet, HIGH); //dávkuj pelety
    delay(1000); //počkej 1s
    digitalWrite(davkovaniPelet, LOW); //vypni dávkování
    delay(1000); //počkej 1s
    }
    if(digitalRead(prostorovyTermostat) == LOW || digitalRead(kotlovyTermostat) == LOW){ //pokud vypne prostorový nebo kotlový termostat
    digitalWrite(davkovaniPelet, LOW); //vypni dávkování pelet
    delay(84000); //počkej 84s
    digitalWrite(ventilator, LOW); //potom vypni ventilátor
    }
    }

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

    Jasně, chápu a ještě jednou děkuju za to cos pro mě do teď udělal. Spoustu věcí jsem si uvědomil(třeba s tím delay že to zastaví procesor-proto mě to pustilo k dalším povelům až po vypršení času) a jak mi vyjde čas (momentálně jsem na mateřský 🙂 – žena je po operaci) tak se na to zase vrhnu. Mám tu pořád hodně neznámých, ještě něco zkusím a pak napíšu výsledek.

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

    Moooc díky za snahu! Koukám že tě to taky chytlo 🙂
    Takže tady odpovědi:
    – Kdy sepne ventilátor? -> Momentálně spíná hned po startu hořáku, ale to je zbytečný, udělal bych to společně se spirálou
    – kdy sepne/vypne hořák? Nemáš jej na relé…. -> hořák spíná pokud je sepnutý prostorový termostat + kotlový termostat (teplota vody v kotli je menší než cca. 75°)
    – hlídání plamene má digitální nebo analogový výstup? -> analogový (je to fotobuňka – obyčejný fotorezistor), ale pro testování používám digitální (fotobuňku simuluju tlačítkem)
    – V popisu je … zapne kotlový termostat … a dál je řešeno hlídání teploty.
    Jak je hlídaná/měřená teplota? -> teplotu hlídá (řídí) kotlový termostat – pod 75°-> sepnutý, nad 85°-> vypnutý

    – Budeš tam mít LCD display? Pak by to chtělo nějáký rozvrh obrazovky …. -> momentálně ne, ale do budoucna možná bude, uvidím
    – Jak budeš signalizovat poruchu, jak jí budeš kvitovat a co má dělat při poruše? -> porucha se momentálně signalizuje pouze kontrolkou „ALARM“, ale do budoucna bych to chtěl vidět i na internetové stránce, kde bych chtěl kotel (hořák) i vzdáleně ovládat.
    Přikládám upravený diagram…

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

    Výborně, díky moc!To už je veselejší 🙂 Ještě bych ale potřeboval poradit.
    Tady je další fáze:

    #define davkovaniPelet 6 //dávkování pelet – šnek
    #define spirala 5 //zapalovací spirála
    #define ventilator 3 //ventilátor
    #define alarm 10 //signalizace poruchy
    #define prostorovyTermostat 12 //prostorový termostat
    #define kotlovyTermostat 2 //kotlový termostat
    #define fotobunka 8 //fotobuňka pro kontrolu plamene

    void setup() {
    pinMode(davkovaniPelet, OUTPUT);
    pinMode(spirala, OUTPUT);
    pinMode(ventilator, OUTPUT);
    pinMode(alarm, OUTPUT);
    pinMode(prostorovyTermostat, INPUT);
    pinMode(kotlovyTermostat, INPUT);
    }

    void loop() {
    if (digitalRead(prostorovyTermostat) == HIGH && digitalRead(kotlovyTermostat) == HIGH){
    digitalWrite(davkovaniPelet, HIGH);
    delay(12000);
    digitalWrite(davkovaniPelet, LOW);
    digitalWrite(ventilator, HIGH);
    digitalWrite(spirala, HIGH);
    delay(60000);
    digitalWrite(spirala, LOW);
    }

    if (digitalRead(fotobunka) == HIGH){
    digitalWrite(spirala, LOW);
    delay(5000);
    digitalWrite(davkovaniPelet, HIGH);
    delay(1000);
    digitalWrite(davkovaniPelet, LOW);
    delay(1000);
    }
    }

    Do prvních podmínek to takhle funguje jak má, ale potom bych potřeboval aby to při zapálení pelet (fotobuňka vidí plamen) vypnulo žhavící spirálu a po pauze 50s začalo dávkování pelet (10s běh dopravníku/10s stání) do doby než vypne kotlový termostat nebo prostorový. (časy v programu jsou 10x menší kvůli testování) Takhle jak to mám, mě to zapne dávkování pelet až vyprší čas (60000) žhavení, dá to jenom jednu dávku a vypne to dávkování.

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

    Ahoj všem. Tak jsem se po dvou týdnech studií a zkoušení pustil do zkušebního zapojení a napsání programu pro řídící jednotku. Zatím jsem chtěl jenom vyzkoušet to, když stlačím tlačítko (prostorový termostat) a pokud bude druhý taky stlačený (kotlový termostat) tak se rozsvítí ledka (šnek začne dávkovat zapalovací dávku pelet). Takže pro začátek taková malá simulace toho, když zapne prostorák tak se spustí šnek a začne dávkovat pelety. Bez tý podmínky druhýho tlačítka to funguje, ale když přidám podmínku tak to pořád funguje stejně, stisk druhýho tlačítka nemá vliv.
    Tady pokus o program:
    [code]
    int cteni;
    int led=6; //zapalovací dávka pelet
    int led2=5; //spirála
    int led3=3; //ventilátor
    int tlacitko=12; //prostorový termostat
    int tlacitko2=2; //kotlový termostat

    void setup() {
    pinMode(led, OUTPUT);
    pinMode(led2, OUTPUT);
    pinMode(led3, OUTPUT);
    pinMode(tlacitko, INPUT);
    pinMode(tlacitko2, INPUT);
    }

    void loop() {
    cteni=digitalRead(tlacitko);

    if (tlacitko2 = HIGH){
    digitalWrite(led, cteni);

    }

    [/code]

    Poradíte prosím kde dělám chybu?
    Díky!

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

    Tak to je paráda, díky za potvrzení. Teď už jenom někoho kdo by to naprogramovat a je to :-). Jelikož já jsem absolutní začátečník, tak toho budu muset nejdřív hodně načíst. Ohledně toho zastavení šroubovice když se sekne peletka, tak si nejsem jistý myslím, že je tam jenom nějaká spojka, jinak je tam jenom kabel který vede z motoru přímo na relé řídící jednotky. No a to zpoždění 14 min. je potřeba pro dohoření zbytku pelet po vypnutí hořáku. (natopení kotle)

Aktuálně je na stránce zobrazeno 27 příspěvků - 31. až 57. (celkem z 57)