Zauważyć błąd na podstawie samego kodu byłoby faktycznie bardzo ciężko... Myślałem że błąd to przepełnienie stosu, więc podłączyłem Arduino UNO i zaprogramowałem Twoim kodem. Nawet bez wyświetlacza pojawiały się błędy, więc postanowiłem poszukać gdzie jest problem.
Byłem bardzo zaskoczony, że to jednak nie brak pamięci, a później było już tylko długie poszukiwanie, jeśli nie stos, to o co może chodzić.
Co do adresów zmiennych w pamięci, to nie muszą być w tej kolejności jak zostały zadeklarowane w programie, u mnie faktycznie valvePin jest zaraz przed rainSensorPin:
00800106 l O .data 0000000a valvePin
00800110 l O .data 0000000a rainSensorPin
Byłem bardzo zaskoczony, że to jednak nie brak pamięci, a później było już tylko długie poszukiwanie, jeśli nie stos, to o co może chodzić.
Co do adresów zmiennych w pamięci, to nie muszą być w tej kolejności jak zostały zadeklarowane w programie, u mnie faktycznie valvePin jest zaraz przed rainSensorPin:
00800106 l O .data 0000000a valvePin
00800110 l O .data 0000000a rainSensorPin