Rys. 1. Czujnik opadów YL-83
Parametry czujnika
- Napięcie zasilania 5V
- Wyjście cyfrowe
- Wyjście analogowe
- Potencjometr pozwalający na regulowanie czułości
- Maksymalna obciążalność prądowa wyjścia cyfrowego wynosi 100mA
- Dwie diody, jedna sygnalizuje podłączenie do zasilania, druga natomiast wykrycie opadów
Podłączenie
- VCC - 5V Arduino
- GND - GND Arduino
- A0 - Pin A0 Arduino, lub inny pin analogowy
- D0 - Pin 5 Arduino, lub inny pin cyfrowy
Wyjście analogowe pozwala na odczyt zmierzonej wartości opadów. Wartość odczytanego napięcia należy odpowiednio zmapować funkcją w celu poprawnego odczytania parametru. W dalszej części zostanie pokazany dokładny sposób odczytania parametru z pinu analogowego.
Wyjście cyfrowe natomiast zmienia stan z wysokiego na niski po wykryciu opadów. Stopień wyzwalania można wyregulować potencjometrem.
Program 1
Pierwszy program będzie bardzo prosty, jego zadaniem będzie tylko sprawdzanie czy stan na pinie cyfrowym uległ zmianie, czyli czy wystąpiły opady.
const int PinD0 = 5; int wartosc = 0; void setup() { //Komunikacja poprzez monitor portu szeregowego Serial.begin(9600); //Ustawienie pinu jako wejście pinMode(PinD0, INPUT); } void loop() { //odczytanie wartości wartosc = digitalRead(PinD0); if(wartosc = LOW) { Serial.println("Wykryto opady"); } delay(3000); }
Program 2
Drugi program będzie odczytywał otrzymaną wartość z układu poprzez pin analogowy.
int wartoscwejsc = 0; int wartoscprzetwo = 0; void setup() { //Włączenie portu szeregowego Serial.begin(9600); } void loop() { //Odczytanie wartosci z pinu analogowego wartoscwejsc = analogRead(A0); //Mapowanie wartosci na wartosc od 0 do 100 reprezentująca //wartosc procentowa wartoscprzetwo = map(wartoscwejsc, 1023, 0, 0, 100); Serial.println(wartoscwejsc); delay(3000); }
Program 3
Ten program jest delikatną wariacją dotyczącą poprzedniego, pozwala on na oszczędzenie czujnika, jak i na zmniejszenie poboru prądu. Wykonuje się to poprzez podłączenie zasilania czujnika do jednego z pinów cyfrowych, który co określony interwał czasowy włącza czujnik, odczytuje wartość a następnie go wyłącza.
Wartość okresu do ponownego odczytania zrealizowana została za pomocą funkcji delay, która jest mało precyzyjna ale do tego typu pomiarów w zupełności wystarczy. Dane z czujnika można spokojnie odczytać co 1, 2, 3 czy nawet 10 minut.
const int PinWej = 5; const int PinZasil = 6; int wartoscwejsc = 0; int wartoscprzetwo = 0; void setup() { //Włączenie portu szeregowego Serial.begin(9600); //Pin odpowiedzialny za podanie zasilania na czujnik pinMode(PinZasil, OUTPUT); } void loop() { //Wlaczenie czujnika digitalWrite(PinZasil, HIGH); //Małe opóźnienie na czas włączenia czujnika delay(200); //Odczytanie wartosci z pinu analogowego wartoscwejsc = analogRead(A0); //Mapowanie wartosci na wartosc od 0 do 100 reprezentująca //wartosc procentowa wartoscprzetwo = map(wartoscwejsc, 1023, 0, 0, 100); //Wylaczenie czujnika digitalWrite(PinZasil, LOW); //Wypisanie wartości Serial.println(wartoscwejsc); //Czas w milisekundach, odczyt co około 5 minut delay(300000); }