02-01-2018, 23:19
(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:
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:reading = analogRead(LM35);
temperatura = analogRead(LM35); //Odczytanie napięcia z czujnika temperatury
Kod:temperatura = analogRead(LM35) * 0.38828125; //Wyznaczenie temperatury
Dalej... zamień:
na:Kod:if (LM35 > (nastaw))
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ć