Close

Řídící jednotka pro peletový kotel

Úvodní stránka Fórum Vaše projekty Arduino Řídící jednotka pro peletový kotel

  • Toto téma obsahuje celkem 112 odpovědí. Do diskuze (6 diskutujících) se naposledy zapojil uživatel johnyhol a poslední změna proběhla před 7 roky a 3 měsíci.
Aktuálně je na stránce zobrazeno 15 příspěvků - 91. až 105. (celkem z 113)
  • Autor
    Příspěvky
  • #9561
    johnyhol
    Účastník

    To posjirka: po připojení relé jsem zjistil, že mi to při jakýmkoliv zápisu(LCD) do smyčky hází poruchu a relé cvakají jako o život. Takže tam je asi problém. Jinak odpověď na otázku: `předpokládám, že se ti ve smyčce nic nezobrazuje a zobrazí se tit o až op sepnutí termostatu. („FOTOBUNKA“).
    Vidím tu problém ten, že ve smyčce LOOP() není žádná prodleva pro LCD a tak když se nic nedej neustále se maže a zobrazuje LCD.`
    je, že to nikdy nic nezobrazilo, jenom hodnotu ze setupu: „NAST.VSTUPY/VYST“.

    Ještě mě napadlo udělat to zobrazování pomocí funkce „SerialDisplay“ z příkladů v Arduino IDE. (tzn. zobrazovat už vytvořený popisy jednotlivých stavů ze seriový linky) Zkoušel jsem to tedy zakompilovat do kódu, ale to taky nic nedělalo. (nezobrazovalo) Pak jsem tedy zkusil udělat test přímo v příkladu z IDE, ale tam to taky nefunguje. Nechápu to! Máte s tím někdo zkušenosti?
    Tady je ta zkouška:

    
    // include the library code:
    #include <LiquidCrystal.h>
    
    // initialize the library with the numbers of the interface pins
    LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
    
    void setup() {
      // set up the LCD's number of columns and rows:
      lcd.begin(16, 2);
      // initialize the serial communications:
      Serial.begin(9600);
      
    }
    
    void loop() {
      Serial.println("TEST ZOBRAZENI");
      // when characters arrive over the serial port...
      if (Serial.available()) {
        // wait a bit for the entire message to arrive
        delay(100);
        // clear the screen
        lcd.clear();
        // read all the available characters
        while (Serial.available() > 0) {
          //lcd.setCursor(0, 0);
          // display each character to the LCD
          lcd.write(Serial.read());
        }
      }
    }
    

    Díky všem za reakce!

    #9562
    posjirka
    Účastník

    vezmu to od konce.
    Test LCD funguje tak, že že ho nahraješ do arduina, otevřeš si v Arduino IDE serial monitor a píšeš, co chceš aby se ti zobrazilo na LCD.
    Občas tam bývá chyba bu´d ve špatně nsatvené rychlosti komunikace, nebo nemáš zapnuté „new line“ a program ti nedetekuje správně to co jsi psal.

    K tomu hlavnímu programu.ukážu ti část programu a musí ti to být jasné:

    // nastaveni pinu displeje
    LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
    #define davkovaniPelet 2 //davkovani pelet snek
    #define spirala 3 //zapalovaci spirala
    #define ventilator 5 //ventilator
    #define alarm 6 //signalizace poruchy
    #define kotlovyTermostat 8 //kotlovy termostat

    používáš ty samé piny jak pro relé tak pro komuniakce i s LCD. to nejde. musíš použít každý zvláš´t. Mě to trklo až když si napsal, že ti cvakají relátka 🙂

    #9866
    johnyhol
    Účastník

    Ahoj. Takže předešlý problém s konfliktem pinů LCD jsem díky tobě vyřešil a zobrazování na displeji už mám taky zhruba hotový. Už jsem se chystal, že se tu s tím jak jsem to vyřešil pochlubím, ale narazil jsem na další problém. Když jsem nasadil Ethernet schield, tak jsem narazil na stejný problém s konfliktem pinů, tentokrát mezi LCD a Ethernetem. Zkoušel jsem hledat jak to vyřešit, ale ani po dvou dnech zkoušení se nic nepovedlo. Mám displej schield který používá piny 4,5,6,7,8,9,10+A0 pro tlačítka a ethernet schield s piny 10,11,12,13 a 4 pro SD. Dočetl jsem se, že se dá použít jiná knihovna a displej ovládat přes jinou sběrnici, ale to co jsem zkoušel tak se mi stejně nedaří. Nemohl bys mi s tím ještě poradit?
    Díky

    #9869
    posjirka
    Účastník

    a nepřemýšlel si o WIFI řešení.

    #9870
    johnyhol
    Účastník

    pro tuhle aplikaci ne, protože to bude zavřený v kovový bedně hořáku a je to úplně dole v baráku kde je špatnej signál.

    #9892
    johnyhol
    Účastník

    Takže jsem opět zkoušel co se dalo a pořád bez úspěchu. Ale jít to nějak musí, je o tom dost napsáno, měly by se podle všeho používat pouze analogový piny.
    Mám tenhle modul:

    
    https://www.aliexpress.com/item/1PCS-LCD-Keypad-Shield-LCD1602-LCD-1602-Module-Display-For-Arduino-ATMEGA328-ATMEGA2560-raspberry-pi-UNO/32708117706.html?spm=2114.13010608.0.0.NIogpr
    
    #9893
    posjirka
    Účastník

    rozhodně to jde. Ale né tak jak si představuješ. nevím o knihovně, která by dokázalo překecat LCD shield pro fungování přes pár pinů. To co čteš ( podle všeho používat pouze analogový piny) ukazuje spíš najiný přístup k LCD. využívá se tzv I2C/TWI sběrnice, která přes převodník komunikuje s LCD. použítá to na UNU piny A4/A5. Každopádně to nejde na tvém shieldu. musel bys udělat jiný shield. Koupit to jako shiel tuším nejde. jde koupit pouze moduly :
    http://www.santy.cz/moduly-c22/arduino-lcd-1602-16×2-modul-shield-mega-nano-i2c-redukce-seriovy-serial-2560-i52/

    použití pinu 11/12/13 je pro isp komunikaci , která umožnujě až 3 zařízení na stejných pinech. fígl je v tom, že tyto piny jsou komunkační a zavolání, které zařízení se má používat se děje tak, že tyto zařízení mají vstupy CE na nějákém dalším pinu (každé zařízení jiný pin) a sepnutím toho pinu aktivuješ dané zařízení. To je ten pin 10 na ethernet shield. Tak fungují zařízení ISP, LCD display toto rozhraní nepoužívá a blokuje piny.

    resumé:
    1. budˇdáš LCD na jiné piny,nevím kolik jich máš ještě volných
    2. dáš LCD na I2C sběrnici + A0 pro talčítka
    3. použiješ jnou sběrnici než ethernet (RS485, Bluetooth, 1-wire – prostě něco co používá UART piny 0/1)

    v každém případě je na čase podívat se na Arduino MEGA, už jen pro volné piny.

    #9894
    johnyhol
    Účastník

    To jsem si myslel, že to s tím mým schieldem takto nerozchodím. Všechny ty návody taky byly (jak píšeš) na displej+převodník. Jinak na Mega už jsem musel přejít před časem (paměť + piny). Ještě mě napadlo (a to asi udělám), že prostě přeruším u displeje pin 4+10 a přemostím je třeba na ty A4+A5. To by mělo fungovat, né?

    #9895
    posjirka
    Účastník

    nepujde. LCD nemá komunikaci přes ISP a tak bude dělat nesymsly.

    #9896
    johnyhol
    Účastník

    Ani přes jiný digitální piny? (třeba D2+D3)

    #9898
    posjirka
    Účastník

    ??? co tam chceš připojit na d2/3 ??

    #9899
    johnyhol
    Účastník

    No přerušit u displeje pin 4+10 a přemostit je třeba na ty D2+D3 a v kódu změnit nastavení:

    
    LiquidCrystal lcd(8, 9, 2, 5, 6, 7);
    

    ale nevím co s tou desítkou?

    #9900
    ArduXPP
    Účastník

    Když je problém z nedostatku pinů , tak stačí použít toto – https://www.ptshop.cz/Modul-I2C-pro-LCD-1602-d15.htm .

    #9901
    johnyhol
    Účastník

    Jasně, na to jsem při mým bádání taky narazil, ale já bych to chtěl vyřešit se stávajícím LCD schieldem. Myslíš tedy, že by to tak jak píšu (se záměnou pinů) nešlo?

    #9902
    posjirka
    Účastník

    ale šlo by to řešit, jen bys musel použít totálně jiné piny. Nikoliv sdílené.
    Sdílené piny jsuo pro ISP komunikaci, LCD shield tuto funkci nemá, takže jí nemůže používat. musel bys s MEGA použít třeba piny úplně od jinud (D30 a víc)

Aktuálně je na stránce zobrazeno 15 příspěvků - 91. až 105. (celkem z 113)
  • Pro reakci na toto téma se musíte přihlásit.