Close

MiK

Vytvořené odpovědi

Aktuálně je na stránce zobrazeno 30 příspěvků - 2,101. až 2,130. (celkem z 2,779)
  • Autor
    Příspěvky
  • odpověď na: Príkaz switch #6533
    Zbyšek Voda
    Účastník

    Dobrý den, pokud vím, tak ne.
    Musíte použít if

    if(cislo > 2 && cislo < 6){...}
    

    Popřípadě by šlo udělat

    switch (Cislo)
    {
    case 3: case 4: case 5: …..; break;
    …..
    }

    Ale to asi není požadované řešení 🙂

    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: Individuálne adresovateľný RGB led pás #6509
    Zbyšek Voda
    Účastník

    Bude to jednodušší, když se s námi podělíte o kód 🙂

    odpověď na: I2C #6508
    rakocid
    Účastník

    Problem vyrieseny. Dakujem za rady.
    Hodnoty ktore som posielal boli prijate pomocou bezdrotoveho priimaca nrf24. Ked boli na väcsiu vzdialenost niektore hodnoty boli na tolko skreslene ze ich nedokazalo poslat dalej.Bohužial som sem ani tu cast programu nenapisal. Wire zbernica funguje skvele.

    odpověď na: Led místo svícení bliká #6495
    ArduXPP
    Účastník

    Už jsem na to přišel, P0 a P1 digital a ostatní analog 🙂

    Ale pořád jsem nepřišel na to proč pořád pouští proud do P5 3.3V .

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

    asi bych tě odkázal na EXOSITE.
    SPEKO2 to používá a nejspíš by ti dokázal poradit.
    http://arduino.sk/viewtopic.php?f=6&t=250&sid=1a2a735f040bc590a27d3aba42cb4ba0

    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 #6487
    posjirka
    Účastník

    super.
    Jestli chceš mít na seriovem portu zprávy o počítadlech tak jen doplnň další řádky Serial.printlm();
    a do závorek dej názvy proměnných.
    já bych šel spíš cestou LCD displaye.
    Stojí pár korun a potřebuješ na ně 6 volných pinu.
    Ideální je 16×2 (16 znaku x 2 řádky).
    Připojení je velmi jednoduché a pak ty zprávy co se kde děje můžeš vidět přímo na něm.
    Idealni je třeba tento:
    http://aukro.cz/modul-klavesice-1602-lcd-keypad-shield-arduino-i6089165384.html
    Nevim jsetli se ti nebude bít s modulem RELE, protože nevím jeho zapojení.
    Navic už tam máš tlačítka , takže je mužeš rovnou využít ….

    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: I2C #6484
    rakocid
    Účastník

    Arduino nano som vymenil, nepomohlo.
    Program zamrzne v casti ked komunikuje cez zbernicu wire.
    Zacne pracovat az po restartovani arduino nano (slave). Restartovanie len mastra nepomaha.
    Co by znamenalo keby bol zahlceny buffer?

    Simakai
    Účastník

    Projekt mám víceméně hotový. Nepodařilo se mi rozběhnout MicroSD modul na klasickém SPI rozhraní spolu s termočlánky (MAX6675), tak jsem na to musel od lesa. Stáhl jsem si SDfat knihovnu a použil tam SoftwareSPI definici pro objekt SD a drátově jsem zapojil MicroSD modul na jiné piny než mám termočlánky. Pak zbývalo jen poladit správné příkazy pro SDfat a fičí to. Po hardwarových SPI pinech 50, 51, 52 mi jedou termočlánky a po softwarových SPI pinech 10, 11, 12 mi jede SD karta.

    odpověď na: Pomoc s kódem – přidání serva #6476
    Onygzz
    Účastník

    Knihovnu pro servo mám jinou než defaultní právě pro to, že ta původní používala stejný časovač jako knihovna pro melodie Tone.h. V této knihovně se to zapisuje délkou pulzu a ne ve stupních. Samostatně to ovládání serva fungovalo, jen mi to nechtělo chodit po té podmínce X úspěšných pokusů. Nakonec jsme to s kamarádem rozchodili. Udělali jsme samostatnou funkci pro otevřít/zavřít servo a tu jsme pak po splnění podmínky X úspěšných tahů jen zavolali. Takže už to víceméně funguje 😉

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

    Tak jsem ti zrušil reakci na prostorovy termostat pri procesu zapalovani.
    Navic je tam watchdog – resetuje sam procesor kdyz se zakousne (8s)
    to tedy vyvolalo zmenu dlouhych delayu na smycku kratkych dealyu.
    Pritom tam je navic na kazdem rohu reset casovace watchdogu – zabranuje autoresetu.
    Zkus to prosím otestovat. novy kod:

    // REGULACE PELETKOVEHO KOTLE
    // author. Johnyhol & by JP
    // v 27_3_2016
    
    // changelog
    // 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 termostat� (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 //fotobu�ka pro kontrolu plamene
    #define trimr1 14 // nastaveni doby zapaleni  DI14 = A0 pro arduino UNO
    #define tlacitkoKvitance 9 // pin tlacitka kvitance poruchy
    
    long cas=13000;
    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); //potom 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
            }
            //delay(12000); //po dobu 12s
    	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(prostorovyTermostat) == LOW || digitalRead(kotlovyTermostat) == LOW){	// prostorovy  nebo  kotlovy termostat vypne
    			if(digitalRead(kotlovyTermostat) == LOW){	// prostorovy  nebo  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
            }
    	//delay(84000); //pockej 84s
    	digitalWrite(ventilator, LOW); //potom 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) == HIGH) {	// 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: Podmínka IF s D3231 #6474
    posjirka
    Účastník

    ve výsledku, napiš nám co přesně má tvůj program dělat a podíváme se na to, nebo tě aspon nasměrujeme. někdy je vhodné použít podmínku „if“ pro přesný čas, nekdy pro časový usek …
    možná ti trochu pomůžu příspěvkem z trochu jiného tématu, ale výsledk je podobný.
    http://arduino.sk/viewtopic.php?f=4&t=152&sid=48998740df66b243127485c0f35cd739

    případně tady máš příklad budíku:
    http://arduino.sk/viewtopic.php?f=3&t=209&sid=48998740df66b243127485c0f35cd739

    odpověď na: propojení 2 mikrokontrolérů #6473
    posjirka
    Účastník

    nrf24l01 mám doma si rok a půl a leží celou dobu v šuplíku 🙂
    nechal jsem se nachytat a na ebayi byl veden jako wifi adapter.
    Tak jsem jej objednal bez ověření si informací 🙂 . důvěřuj ale prověřuj.
    50 m je vcelku dost a moc bych na tu spolehlivost nedal ani v jednom případě.
    Nemáš tam třeba ethernet? i tak by to šlo řešit.
    Bezdrát budeš ladit dlouho a zbytečně…
    Toto budou vcelku choulostivé data a udržet je v pořádku bude znamenat poslat min.2x-3x a porovnat si výsledky. přípaně výběr 2 ze 3 …

    použij Rs485 a budeš mít klid.

    odpověď na: I2C #6472
    posjirka
    Účastník

    a po 2 hodinách se ti zhroutí komunikace nebo resetuje arduno?
    Pokud linka videl bych to na zahlcený buffer, pokud reset arduna tak chyba v čipu.
    zkoušel jsi i jiný arduino?
    Stačil by čip s ledkou…

    odpověď na: Pomoc s kódem – přidání serva #6471
    posjirka
    Účastník

    odkud máš knihovnu na ovládání serva?
    Ano vidím že je pro časovač timer2, ale i tak se na servo zapisuje uhel natočení serva v rozsahu 0-180 st.
    Ty máš zapsané
    a.write(2000);
    tedy 2000 st.
    dej tam

    a.write(0);
      delay(2000);
      a.write(180);
      delay(2000);

    to by mělo otočit servem zleva doprava.
    Navíc
    a.attach(9);
    by se měl definovat pouze 1x a to ve funkci Setup()

    odpověď na: Analog in a malé záporné napětí #6462
    rob.brno
    Účastník

    článek připojuj na analog. vstup přes odpor, který při otočení polarity vstup ochrání. Na vstupech atmegy jsou připojeny ochranné diody vůči zemi a VCC, takže veškerá napětí mimo intervalu od asi -0,3V až VCC+0,3V „zkratuje“. Ten odpor omezí zkratový proud, takže zvol vhodnou velikost např. 10k(max. proud při 1,4V do vstupu bude 1,1/10000).

    odpověď na: I2C #6460
    rakocid
    Účastník

    vyskúšal som posielať 3 bajty, vzdialenosť minimálna, zdroj som zvýšil na 2 ampere, nikdy to nevydrží dlhšie ako hodinu.

    odpověď na: Podmínka IF s D3231 #6455
    rob.brno
    Účastník

    Nebo můžeš použít knihovnu time, která interpretuje čas a datum jako jedno číslo typu long a udává počet sekund tuším od 1.1.1970 0:0:0
    Má v sobě i funkce na převod z tohoto formátu na datum a čas i nazpět. Porovnával bys pak vlastně jen dvě long čísla s „vymaskovanýma“ vteřinama nebo i minutama.

    odpověď na: propojení 2 mikrokontrolérů #6454
    rob.brno
    Účastník

    Právě přemýšlím nad komunikací mezi dvěma arduiny(v domě a v rámci pozemku, tedy nějakých max.50m daleko), po drátech bych ji řešil po RS485. Vzduchem mě prvně napadl bluetooth, ale to je pro tento případ asi zbytečné.
    Tyhlety moduly RF: http://www.ebay.com/itm/433Mhz-WL-RF-Transmitter-Receiver-Module-Link-Kit-for-Arduino-ARM-MCU-Wireless-/380717845396?hash=item58a48d4b94:g:x9cAAMXQigBSMp4X jsou jen pro jednosměrnou komunikaci?

    Ted jsem viděl i moduly NRF24 na 2,4GHz, např.: http://www.ebay.com/itm/2PCS-Arduino-NRF24L01-2-4GHz-Wireless-RF-Transceiver-Module-New-/262150618543?hash=item3d0964fdaf:g:YP4AAOSwLzdWTYYk

    Chci dělat řízení nabíjení elektroauta z FVE na konektoru Mennekes podle volného výkonu z FVE. Měřící zařízení bude v rozvaděči na přípojce a nabíjení kdekoliv okolo domu. Jde o to, aby se např. každou vteřinu přenesla informace o volném dostupném výkonu ve Wattech(takže na to budou stačit 2B).

    Byl by pro tento účel modul NRF24 vhodný?

    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 #6446
    oplocky
    Účastník

    Děkuji, – zkusil jsem poslat mail kolem možná budoucího projektu
    můj také dočasný mail – oplockyj@volny.cz

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

    to oplocky:
    nechci sem dávat svuj soukromý mail, tak mi napiš na
    posjirka-arduino@seznam.cz
    je to dočasný mail a nebudu tam pořád, nicméně tě pak přesměruju na soukromý mail…

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

    nedělal jsem s tím nic (tlačítko potvrzení poruchy).
    K tomu bodu 3.
    3) test vypnutí termostatu během zapalování
    na jaký termostat má reagovat a najaký nemá.
    Předpokládám, že kotlový termostat může vypnout i při žhavení a v tu chvíli bych měl se vším skončit a nechat dohořet.
    Prostorový termostat bude jak při žhavení?
    Na začátku aby vubec začal proces žhavení je třeba mít oba dva termostaty sepnuté.
    Po startu muže prostorový termostat vypnout.
    Jestli to chápu správně chceš aby zapálení už po startu nebylo na prostorovém termostatu závislé a na jeho vypnutí by reagoval až v procesu udržení hoření?

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

    Je možné spojit se s POSJIRKOU ?, měl bych soukromý dotaz, který se netýká příspěvku, nenašel jsem nikde kontakt.

    Děkuji

    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 #6429
    posjirka
    Účastník

    zkus jestli se dostaneš sem:

    https://123d.circuits.io/circuits/1638547-regulace-pro-peletkovy-kotel

    Je tam celé zapojení + simulator včetně kodu.
    Autor jsem já, takže jen já mám právo změn, ale můžeš si to vyzkoušet a podívat se jak je co zapojený. Ať zbytečně zasaviníme toto forum …
    Když klikneš na součástku tak se ti ukáže co je to zač/co simuluje …

    odpověď na: Řízení kotle s akumulací #6428
    jurisek81
    Účastník

    Dobrý den,

    může být místo Arduina PLC ?

    Jirka

    krmasekjirka@gmail.com

Aktuálně je na stránce zobrazeno 30 příspěvků - 2,101. až 2,130. (celkem z 2,779)