Začátečník arduino - pomoct s tlačítky - bazén (přesunuto)
Moderátor: Moderátoři
Na první kouknutí se mi nezdá ten konec. Čerpadlo ti bude často spínat a vypínat. Dal bych tam nějakou hysterezi. Tedy nepoužít else ale 1 krok čerpadlo zapnout když bude teplota panelů větší než "" a 2 krok čerpadlo vypnout když bude nižší než třeba 30. Proč vypínat když je těsně pod 50? Spousta využitelného tepla se nevyužije. Možná se pletu ale u kolektorů na přitápění se využívá i teplotní spád 2-3 stupně.
To nastavenie vystupnich pinou a puullup je zbytocne krkolomne cez For cyklus a neprehladne. Napis to bez toho cyklu.
Rozlisenie cidiel na 9 staci nastavit raz (nastavenie je ulozene v eeprom)
Zase tam vidim ovladanie rele je ulozene v poli a riesene cez pole.
Nepouzivaj to na vstupne piny a rele ak to nieje nutne pouzi len
Digital write (rele2,High)
Rozlisenie cidiel na 9 staci nastavit raz (nastavenie je ulozene v eeprom)
Zase tam vidim ovladanie rele je ulozene v poli a riesene cez pole.
Nepouzivaj to na vstupne piny a rele ak to nieje nutne pouzi len
Digital write (rele2,High)
Diky za napady. Ten for, tam mam abych nemusel pokazde neco pripisovat kdyz neco pridam. Tak to pridam jen do pole a zmenim di kolika ma for pocitat. No nicmene ve vysledku to treba predelam. Mam na to celou zimu
Jinak je trochu problem s tlacitkem "Zapnuto". Nekdy ho musim podrzet aby se to zaplo. Jinak jen vystup ns rele problikne a zustane vypnuty. Pritom, ale na displeji je zobrazeno "Zapnuto". Daval sem to za vinu fci delay(), ale tu tam nikde nemam...
Nenapada nekoho proc to dela?
Jinak je trochu problem s tlacitkem "Zapnuto". Nekdy ho musim podrzet aby se to zaplo. Jinak jen vystup ns rele problikne a zustane vypnuty. Pritom, ale na displeji je zobrazeno "Zapnuto". Daval sem to za vinu fci delay(), ale tu tam nikde nemam...
Nenapada nekoho proc to dela?
Jed nastavujes outputs po jednotlivych prikazoch zaberie ti dajme tomu 3cykly. Cez for to zaberie 15. A hlavne forko je neprehladne. Tak pozries do zdrojaku a hned vies ze rele2 je vystup aj na ktorom pine je.
Ten problem zo zapnutim bude asi v funkcii teplota.
Neviem ako je riesene cidlo ds. Ale standartne sa spusti prevod v cidle ten trva nejaky ca(vid datashee) a az potom sa moze nacitat teplota.
Tj dve funkcie. Jedna start merania a druha nacitanie nameranej hodnoty. Prever to ako to ma arduino.
Podla mna sa ti vyhodnoti podmienka pre obsluhu rele2 v funkcii teplota a vypne ti rele2.
Ten problem zo zapnutim bude asi v funkcii teplota.
Neviem ako je riesene cidlo ds. Ale standartne sa spusti prevod v cidle ten trva nejaky ca(vid datashee) a az potom sa moze nacitat teplota.
Tj dve funkcie. Jedna start merania a druha nacitanie nameranej hodnoty. Prever to ako to ma arduino.
Podla mna sa ti vyhodnoti podmienka pre obsluhu rele2 v funkcii teplota a vypne ti rele2.
Už jsem asi zjistil chybu u těch tlačítek. Měl jsem je sice v "setupu" ale navíc ještě vnořenou do funkce "displayTime()". Jinak po dnešním hraní jsem usoudil, že dosazovat požadované vstupy výstupy pomocí pole je nepřehledné. Musel jsem stále rolovat nahoru a dolů jak je pořadí v tom poli. Pak jsem si to napsal na papír. Nakonec to přepsal přímo v kódu a je to... Zatím to funguje podle plánu. Jen ještě musím doladit to snímání teploty. Ta se aktualizuje až po kliku na některé z tlačítek...
Nový kód:
https://create.arduino.cc/editor/Rellik ... 02/preview
Nový kód:
https://create.arduino.cc/editor/Rellik ... 02/preview
Senzor set.Resolution by měl řešit přesnost čidla -http://www.homautomation.org/2015/11/17 ... 1112-bits/
Jinak i po předchozí úpravě programu to nedrželo stav. Pak jsem zjistil, že se mezi sebou bijí dvě funkce, kdy v jedné se čerpadlo zapíná a v druhé naopak dle podmínek vypíná. To jsem vyřešil, že pokud je jedna funkce v daném časovém úseku (večerní a ranní filtrace), tak nejede "denní" funkce ohřevu vody. Teď ještě musím odladit to dávkování chloru, které trochu zlobí.. Nechce se zapnout za daných podmínek - kód řádek 201 (216). Pokud by někdo měl nějaké elegantnější řešení budu rád...
https://create.arduino.cc/editor/Rellik ... 02/preview
Jinak i po předchozí úpravě programu to nedrželo stav. Pak jsem zjistil, že se mezi sebou bijí dvě funkce, kdy v jedné se čerpadlo zapíná a v druhé naopak dle podmínek vypíná. To jsem vyřešil, že pokud je jedna funkce v daném časovém úseku (večerní a ranní filtrace), tak nejede "denní" funkce ohřevu vody. Teď ještě musím odladit to dávkování chloru, které trochu zlobí.. Nechce se zapnout za daných podmínek - kód řádek 201 (216). Pokud by někdo měl nějaké elegantnější řešení budu rád...
https://create.arduino.cc/editor/Rellik ... 02/preview
Atlan: vyzkoušeno jen jedno definování - funguje Dík za radu.
Jinak jsem konečně vyřešil to raní a večerní časování filtrace. Chtělo to popřidávat pár závorek a ráno i večer je v jednom ifu...
No nicméně mě pro změnu zlobí "denní" program, který jede mezi těmi filtracemi. Konkrétně se mi nechce sepnout relé filtru. A to na to už hledím asi 2 hodiny a nevím kde se to neguje...
https://create.arduino.cc/editor/Rellik ... d45173d202
funkce teploty - řádek 249
v programu se volá na řádku 223
výstup na ventil se otevře správně (266), ale relé předním už nee
EDIT:
Tak už vím co to relé blokuje. Je to řádek 199 a ten řádek 222 (pokud ho povolím. Teď budu dumat jak to omezit... :-/
EDIT/EDIT:
vyřešeno.
Řádek 199 ošetřen podmínkou, která kontroluje jestli není aktivní automatický režim:
a ten další řádek odmazán, protože pak už se to řídí výstupem z funkce na hlídání teplot, takže tam to bylo zbytečné...
Zatím tedy výsledný kód je odkazu výše...
Teď max budu dolaďovat kód pro lepší přehlednost. Jo a je tam navíc ošetření tlačítek proti delšímu stisku...
Max ještě pořeším jinak "ruční" dávkování chloru, které je teď pomocí delay(), čímž se vše ostatní zastaví, což není pěkné, že to cca 1 minutu nebude počítat ani čas...
Takže díky všem zúčastněným za všechny rady, které mi dost pomohly do začátku. Teď už mi to nepřijde tak složité jako když jsem to zapnul poprvé a ťukal tam blikání diod...
Jinak co se týká ceny, jak se řešilo v některém tématu, že se nevejdu s tím co chci do 1000,- jak jsem říkal, tak jsem se vlezl do cca 600,-
Deska UNO - 160,-
DS3231 - 45,-
LCD 2x16 - 90,-
Releshield - 114,-
2x DS18B20 - 90
Elektroventil mám zdarma z práce a těch pár tlačítek, odporů a LED diod se vejde cca do 50,- (jinak jsou šuplíkovky)...
Čas u toho strávený nepočítám
Jinak jsem konečně vyřešil to raní a večerní časování filtrace. Chtělo to popřidávat pár závorek a ráno i večer je v jednom ifu...
No nicméně mě pro změnu zlobí "denní" program, který jede mezi těmi filtracemi. Konkrétně se mi nechce sepnout relé filtru. A to na to už hledím asi 2 hodiny a nevím kde se to neguje...
https://create.arduino.cc/editor/Rellik ... d45173d202
funkce teploty - řádek 249
v programu se volá na řádku 223
výstup na ventil se otevře správně (266), ale relé předním už nee
EDIT:
Tak už vím co to relé blokuje. Je to řádek 199 a ten řádek 222 (pokud ho povolím. Teď budu dumat jak to omezit... :-/
EDIT/EDIT:
vyřešeno.
Řádek 199 ošetřen podmínkou, která kontroluje jestli není aktivní automatický režim:
Kód: Vybrat vše
if(!filtraceAuto){
digitalWrite(releFiltr, LOW);
}
Zatím tedy výsledný kód je odkazu výše...
Teď max budu dolaďovat kód pro lepší přehlednost. Jo a je tam navíc ošetření tlačítek proti delšímu stisku...
Max ještě pořeším jinak "ruční" dávkování chloru, které je teď pomocí delay(), čímž se vše ostatní zastaví, což není pěkné, že to cca 1 minutu nebude počítat ani čas...
Takže díky všem zúčastněným za všechny rady, které mi dost pomohly do začátku. Teď už mi to nepřijde tak složité jako když jsem to zapnul poprvé a ťukal tam blikání diod...
Jinak co se týká ceny, jak se řešilo v některém tématu, že se nevejdu s tím co chci do 1000,- jak jsem říkal, tak jsem se vlezl do cca 600,-
Deska UNO - 160,-
DS3231 - 45,-
LCD 2x16 - 90,-
Releshield - 114,-
2x DS18B20 - 90
Elektroventil mám zdarma z práce a těch pár tlačítek, odporů a LED diod se vejde cca do 50,- (jinak jsou šuplíkovky)...
Čas u toho strávený nepočítám
Chlor sa davkuje minútu? Pri stlaceni rucneho davkovania nacitaj sekundy z rtc, uloz nacitanu hodnotu do premenej caschlor, daj delay 1s a pomracuj v programe. V hlavnej slucke daj podmienku ze ked sa sec z rtc rovnaju caschlor ma vypnut chlorovanie.
Samozrejme musit to urobit cez podmienku rucnechlorovanie aby to to neshadzovalo chlorovanie v automatike.
Samozrejme musit to urobit cez podmienku rucnechlorovanie aby to to neshadzovalo chlorovanie v automatike.
Mám to přes malé peristaltické čerpadlo a podle objemu bazénu mi vychází 2 dávky denně po cca 40s čerpání... + zapnutí hlavního čerpadla chvíli předem a jeho vypnutí po cca 10 minutách aby se to alespoň trochu promíchalo. To ruční přichlorování chci kvůli tomu, že budu bazén čistit a dopouštět novou vodu, tak abych tam ten chlor vyrovnal... Jinak to RTC mě napadlo taky, jen musím vyzkoumat jak to nejlíp provést... Nejspíš budu vycházet z toho raního a večerního filtrování...
Kdyby se někdo chtěl podívat jak pokračuje můj začátečnický projekt, tak je k nahlédnutí na https://github.com/Rellik12/BazenBot
Jelikož jsem se s tím programováním celkem zžil (nemám problém se učit něco nového i v mém věku), tak plánuju další projekt a to CNC plotter na kreslení "ťišťáků"... Všude jsou verze z CD/DVD mechanik, ale mám k dispozici X různých servo motorků, tak na to nejspíš půjdu jinak...
Jelikož jsem se s tím programováním celkem zžil (nemám problém se učit něco nového i v mém věku), tak plánuju další projekt a to CNC plotter na kreslení "ťišťáků"... Všude jsou verze z CD/DVD mechanik, ale mám k dispozici X různých servo motorků, tak na to nejspíš půjdu jinak...