• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Problem ze sterowaniem przekaźnikiem w termostacie
#3
(02-01-2018, 09:48)krn78 napisał(a): Ech... błędów co najmniej kilka.
Przede wszystkim, sprzętowo. Przyciski podpina się raczej pod piny cyfrowe, natomiast drugi zacisk przycisku łączy się z masą. Wtedy wciśnięcie przycisku to podanie masy na dany pin, np.
Kod:
int przycisk=7;

void setup(){
pinMode(przycisk, INPUT_PULLUP);
}

void loop(){
if (digitalRead(przycisk)==LOW){
//tutaj kod, który ma się wykonać, kiedy przycisk jest wciśnięty.
 }
}

Do czego Ci zmienna reading? W kodzie masz:
Kod:
reading = analogRead(LM35);
temperatura = analogRead(LM35); //Odczytanie napięcia z czujnika temperatury
Zapisujesz odczyt z czujnika do zmiennej reading, a zaraz potem robisz to samo i zapisujesz do zmiennej temperatura. Później, w kodzie, zmienna reading już nie występuje. Przy okazji, można to, co zrobiłeś, zapisać w jednej linii:
Kod:
temperatura = analogRead(LM35) * 0.38828125; //Wyznaczenie temperatury

Dalej... zamień:
Kod:
if (LM35 > (nastaw))
na:
Kod:
if (temperatura > nastaw)

Kolejna rzecz, że chyba niepotrzebnie zagnieżdżasz ify. Robisz coś takiego:
jeśli (temperatura>nastaw), to: {
 jeśli (drzwi1_zamknięte), to: {
   jeśli (drzwi2_zamknięte), to: {
      i tak dalej

}}}

A powinno być chyba:
jeśli (temperatura>nastaw), to: {
tutaj kod
}
jeśli (drzwi1_zamknięte), to: {
tutaj kod
}
jeśli (drzwi2_zamknięte), to: {
tutaj kod
}

Musisz na to uważać. Postawienie nawiasu klamrowego w nieodpowiednim miejscu może drastycznie zmienić działanie kodu.
Zagnieżdżenie ifów, w Twoim przypadku, będzie przydatne imho w jednej rzeczy:

jeśli (temperatura<10), to: {
 jeśli (drzwi1_otwarte), to: {
   tutaj kod
}
 jeśli (drzwi2_otwarte), to: {
   tutaj kod
}
}

Jeszcze jedna uwaga: jak widzę, wykorzystałeś serial monitor. Możesz, za jego pomocą, wyświetlać sobie stany pinów, wartości zmiennych, zobaczyć podgląd drzwi (otwarte/zamknięte) podobnie jak wyświetliłeś temperaturę. itp. Jeśli coś w kodzie Ci nie działa, możesz dzięki temu narzędziu sprawdzić, dlaczego jest tak, a nie inaczej. Wtedy o wiele łatwiej jest zdiagnozować usterkę.

Wielkie dzięki za podpowiedź i fajne podejście do sprawy .
Mi właśnie o to chodziło żeby dioda i przekaźnik działały kiedy drzwi 1 i drzwi 2  i czujka są zwarte do masy oraz temperatura poniżej 10 stopni.
Jeżeli jeden z tych warunków nie spełniony mają nie działać
 
Odpowiedź
  


Wiadomości w tym wątku
RE: Problem ze sterowaniem przekaźnikiem w termostacie - przez mlamla - 02-01-2018, 23:19

Skocz do:


Przeglądający: 1 gości