Mając przygotowany i zmontowany sprzęt można przejść do części programistycznej. Kod ma za zadanie wysyłać na monitor portu szeregowego wartość cyfrową oraz analogową. W momencie wykrycia opadów zostanie uruchomiony buzzer.
Kod programu znajduje się poniżej (pliki projektowe znajdują się w sekcji „do pobrania”):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
// [PROJEKT] Czujnik deszczu - KAmduino UNO oraz Raindrops Module // Autor: Patryk Mądry // Mikrokontroler 2017 r. int wartosc_cyfrowa = 0; int wartosc_analogowa = 0; void setup() { pinMode(2,INPUT); pinMode(4,OUTPUT); Serial.begin(9600); } void loop() { wartosc_cyfrowa=digitalRead(2); wartosc_analogowa=analogRead(A0); Serial.print("Wartosc cyfrowa: "); Serial.println(wartosc_cyfrowa); Serial.print("Wartosc analogowa: "); Serial.println(wartosc_analogowa); if (wartosc_cyfrowa == 0) { digitalWrite(4,HIGH); } else { digitalWrite(4,LOW); } delay(100); } |
Najpierw deklarowane są zmienne, w których będą przechowywane wartości pochodzące z pinu cyfrowego oraz analogowego:
1 2 |
int wartosc_cyfrowa = 0; int wartosc_analogowa = 0; |
Następnie należy ustawić pin 2 jako wejście cyfrowe z czujnika deszczu, pin 4 jako wyjście (buzzer), a także prędkość transmisji:
1 2 3 4 5 6 |
void setup() { pinMode(2,INPUT); pinMode(4,OUTPUT); Serial.begin(9600); } |
W pętli głównej programu do zmiennych przypisywane są wartości z pinu cyfrowego 2 oraz analogowego A0, a także są wyświetlanie wartości tych zmiennych na monitorze portu szeregowego:
1 2 3 4 5 6 7 8 9 10 11 12 |
void loop() { wartosc_cyfrowa=digitalRead(2); wartosc_analogowa=analogRead(A0); Serial.print("Wartosc cyfrowa: "); Serial.println(wartosc_cyfrowa); Serial.print("Wartosc analogowa: "); Serial.println(wartosc_analogowa); (...) |
Gdy na wyjściu cyfrowym pojawi się stan niski, zostanie załączony buzzer. Próg jego załączania możemy ustawić za pomocą potencjometru.
1 2 3 4 5 6 7 8 |
if (wartosc_cyfrowa == 0) { digitalWrite(4,HIGH); } else { digitalWrite(4,LOW); } |
Rysunek 4. Widok monitora portu szeregowego podczas działania programu
Działanie programu zostało przedstawione poniżej: