Pokračovanie programu

Wiring, C++, C, Java, ...
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Odpovědět
pitopit
Příspěvky: 7
Registrován: 02 čer 2018, 18:39
Reputation: 0

Pokračovanie programu

Příspěvek od pitopit » 19 říj 2018, 21:15

Zdravím,používam arduino pre akvárium 3x relé.Občas sa stane,že na chvýlku vypadne elektrika (1-2 sekundy alebo to možno robí napájací zdroj pre arduino).Keď sa tak stane program sa už nespustí,až nasledujúci deň.Čo sa s tým dá urobit?
Mna napadá len dať batériu na napájanie arduina cez diodu.V prípade výpadku to poťiahne baterka.
Přílohy
Pre_3_rel_.ino
(4.69 KiB) Staženo 130 x

petan
Příspěvky: 358
Registrován: 23 črc 2017, 10:19
Reputation: 0
Kontaktovat uživatele:

Re: Pokračovanie programu

Příspěvek od petan » 20 říj 2018, 13:10

V první řadě bych řešil výpadky. Pokud relé spíná něco náročnějšího na odběr a máš špatně udělaný zdroj, tak pokles napětí může Arduino resetovat... Takže bych řešil zdroj, případně bych Arduino proti krátkým výpadkům zálohoval kondenzátorem.

Další věc bych řešil v programu. Používáš podmínky, kde zapínáš a vypínáš relé. Navíc dost zvláštním způsobem... Lepší by bylo udělat jednu podmínku tak, aby byla aktivní pouze pokud má být relé sepnutí.
Tedy kód :

Kód: Vybrat vše

  if (h == 17 && m == 44 && s <= 6) {
  //tato podmínka zapíná relé od 17:44:00 do 17:44:06
    digitalWrite(rele1, LOW);  //rele zapne
  }
  if (h == 17 && m == 44 && s >= 30) {  // 20 vteřin
  //tato podmínka vypíná relé od 17:44:30 do 17:44:59
    digitalWrite(rele1, HIGH);  //rele vypne
  }
  
nahraď kódem:

Kód: Vybrat vše

  if (h == 17 && m == 44 && s >= 0 && s <= 30) {
  //rele sepne, pokud je 17 hodin, 44 minut a více než 0 sekund a méně než 30 sekund (včetně)
    digitalWrite(rele1, LOW);  //rele zapne
  }
  else{
    digitalWrite(rele1, HIGH);  //rele vypne
  }
  
Stejně to zkus u dalších relé.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Google [Bot] a 12 hostů