Body zdarma Java týden
Využij podzimních slev a získej od nás až 40 % bodů zdarma! Více zde
Pouze tento týden sleva až 80 % na Java e-learning!
Avatar
nemec.radovan:9. září 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. září 9:49
Avatar
Roman
Člen
Avatar
Odpovídá na nemec.radovan
Roman:9. září 10:50

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

 
Nahoru Odpovědět 9. září 10:50
Avatar
nemec.radovan:9. září 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. září 11:19
Avatar
Roman
Člen
Avatar
Odpovídá na nemec.radovan
Roman:9. září 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. září 12:28
 
Nahoru Odpovědět 9. září 12:26
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na nemec.radovan
Erik Šťastný:9. září 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. září 12:32
Avatar
Odpovídá na Roman
nemec.radovan:9. září 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. září 12:34
Avatar
Odpovídá na Erik Šťastný
nemec.radovan:9. září 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. září 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.