Witam, mam problem z kodem. Potrzebuje zrobić termostat (wraz z kontrolowaniem wilgotności) na arduino z wykorzystaniem DHT11, dwóch przekaźników oraz LCD shield. Osobno działa mi LCD shield oraz czujnik DHT11, natomiast jeżeli je połączę i próbuje uruchomić program mam błąd (zdjęcie poniżej), przekaźniki będą dodane później jak już uporam się z tym kodem. Czujnik podłączony jest do pinu 2, przekaźniki do pinów A1 oraz A2, jeden przekaźnik ma sterować grzałką a drugi nawilżaczem powietrza. W zamyśle mam ustawić zadaną temperaturę oraz wilgotność, jeżeli ustawione parametry będą wyższe to załączy się przekaźnik, po dobiciu do zadanych parametrów wyłączy. Proszę o pomoc.
Tak, rzeczywiście była pobrana błędna biblioteka, udało mi się z tym uporać natomiast teraz mam inny problem. Gdy program się uruchamia i dochodzi do momentu gdzie są wybrane I/O jako OUTPUT dla przekaźników automatycznie Arduino ustawia na tych pinach stan wysoki - pomimo tego. że jest w kodzie wpisane aby ustawił stan niski, czy jest możliwość aby tego uniknąć? Dołączam fragment kodu:
Szkoda że nie opisujesz co to dokładnie za arduino jaka płytka i które piny, niektóre są wykorzystane. Np. UNO ma diodę L na pinie 13 jak i TX/RX co może powodować błędne myślenie.
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą.
27-08-2022, 18:41 (Ten post był ostatnio modyfikowany: 27-08-2022, 18:44 przez Silent.)
(27-08-2022, 17:32)Jarewa0606 napisał(a): Szkoda że nie opisujesz co to dokładnie za arduino jaka płytka i które piny, niektóre są wykorzystane. Np. UNO ma diodę L na pinie 13 jak i TX/RX co może powodować błędne myślenie.
Arduino UNO R3, piny przekaźników to A2 A3 a tu jest jeszcze pokazane:
Łatwiej byłoby pomóc gdybyś zamieścił cały kod, a nie tylko urywki.
Możesz temat ustawienia w stan wysoki załatwić operując na rejestrach - najpierw ustawić rejestr stanu, a potem rejestr kierunku.
Zgodnie z informacjami na stronie Arduino po resecie powinno ustawić piny jako LOW, a ustawienie jako OUTPUT to niska impedancja. Podrzuć schemat układu.
Raczej nie wysoki, tylko niski, a przekaźniki mogą być aktywowane/sterowane stanem niskim tak samo jak wysokim (są oba typy w sprzedaży, czasami można to zamienić zworką na płytce).
Jeden ze sposobów opisał MadMrQ. Na wypadek gdy nawet wejście może wysterować przekaźnik powinny być rezystory pullUP lub pullDOWN. W Arduino też można wpisać 1 digitalWrite zanim ustawi się pin jako wyjście.
digitalWrite(relay1, HIGH);
pinMode(relay1, OUTPUT);
Dzięki temu przekaźnik nie będzie dzwonił przy każdym resecie Arduino, ale dodałbym jeszcze rezystor 10k między pin relay1 do VCC. Powinni dać taki na module przekaźników, ale po co zwiększać koszty.
Na pewno samo ustawienie jako OUTPUT nie robi stanu wysokiego, domyślnie jest stan niski.