Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Arduino, senzor vlhkosti a krokový motor

Aktivity
Avatar
nemec.radovan:9.9.2019 9:49

Zdravím všechny elektro nadšence a programátory. Potřeboval bych radu ohledně kódu a nebo podmínky jak by šel nastavit daný problém.

Popis problém:
Mám senzor vlhkosti půdy, který neměří nějaké data, mám nastavenou podmínku že při suché půdě což třeba dejme tomu je hodnota 800 se zapne krokový motor a otevře ventil od vody, a tady nastane můj problém, kde po daném čase se provede kontrolní měření a hodnota třeba je stále 800 tak se motor znovu sepne.

Vize: bylo by možné nastavit to tak, že proběhne snímání, při vysoké hodnotě se motor otočí (respektivně ventil otevře) jen jednou, a při dalším kontrolní motor uz nebude aktivni do doby než hodnota dosáhne třeba 500 a motor se sepne respektivně ventil se uzavře?

Zatím mi to funguje v cyklu tak, že pro každém měření se motor otvírá.

Byl bych moc rád za každý názor a nebo jak by to šlo vyřešit respektivně jen ukázat nějaký návrh podmínky nebo cyklu.

 
Odpovědět
9.9.2019 9:49
Avatar
Roman
Člen
Avatar
Odpovídá na nemec.radovan
Roman:9.9.2019 10:50

A kod mas kde? Odpoved je stejne jasna jako tva otazka - pouzij globalni promenou s vyhodnocenim stavu.

 
Nahoru Odpovědět
9.9.2019 10:50
Avatar
nemec.radovan:9.9.2019 11:19

Kód mám ještě doma, přihodí když tak večer. Spíše nevím jak tu proměnou napsat, včera jsem si s tím hrál půl dne. Sice teď mě trklo že jsem to mohl napsat trochu jinak.

If(vlhkost < 700) {
otevriMotor();
}else if(vlhkost > 700){
zavriMotor();
}

Otevři a zavři motor, mám přímo definované že se motor otočí o 90°.

Ale ne to stále načítá dokola a otevírá motor.

 
Nahoru Odpovědět
9.9.2019 11:19
Avatar
Roman
Člen
Avatar
Odpovídá na nemec.radovan
Roman:9.9.2019 12:26

Jak jsem psal globalni promena. Bez celeho kodu je to jen nastrel.

bool isOpen = false;

if (vlhkost < 700 && isOpen==false) {
  isOpen=true;
  otevriMotor();
} else if(vlhkost > 700 && isOpen==true) {
  isOpen = false;
  zavriMotor();
}

Mmch zapis jde zjednodusit ale napsal jsem to tak aby jsi to pochopil. Zjednoduseni je na tobe.

Editováno 9.9.2019 12:28
 
Nahoru Odpovědět
9.9.2019 12:26
Avatar
Odpovídá na nemec.radovan
Erik Šťastný:9.9.2019 12:32

Arduino umožňuje měřit čas, ne?

Osobně bych šel cestou otevření ventilu a následného timeoutu třeba 5 minut kdy nebude možné ventil znovu otevřít.

 
Nahoru Odpovědět
9.9.2019 12:32
Avatar
Odpovídá na Roman
nemec.radovan:9.9.2019 12:34

Kód bych rady dal rád, jen nejsem zrovna u počítače. Každopádně nastřelili mi stačí at vím jakým směrem jít. Děkuji moc za radu. Večer to vyzkouším před bool.

 
Nahoru Odpovědět
9.9.2019 12:34
Avatar
Odpovídá na Erik Šťastný
nemec.radovan:9.9.2019 12:42

Přes čas mě to také napadlo, že bych to mohl pozastavit, ať se měření pozdrží. To jsem už zkoušel, spíše to chci přímo nějak naprogramovat. Jestli je to možné. Ještě se učím a myslím že zkoušet podmínky a cykly je fajn, i když si člověk trochu ponadává

 
Nahoru Odpovědět
9.9.2019 12:42
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.