
V-ați întrebat vreodată cum știu rezervoarele automate de apă când să se oprească din umplere sau cum pot sistemele de alertă la inundații să știe când apa crește la niveluri periculoase? Toate acestea se datorează unor senzori simpli, dar ingenioși, care pot „simți” prezența apei.
Unul dintre cei mai ușori și mai ușori de experimentat senzori pentru începători este senzorul de nivel al apei – iar atunci când este combinat cu un Arduino, deschide o lume de proiecte interesante și practice!
Acest proiect vă va prezenta cum funcționează senzorii de nivel al apei. Un exemplu de cod Arduino ușor de urmărit, care vă vor ajuta să citiți nivelurile apei și să utilizați aceste citiri pentru a aprinde LED-uri – oferindu-vă o modalitate vizuală de a monitoriza nivelul apei.

În centrul acestui senzor se află un tranzistor NPN, care funcționează ca un comutator.

Exemplu:


Exemplu cod: senzorul citeste nivelul la 1 secunda
// Sensor pins
#define sensorPower 7
#define sensorPin A0
// Value for storing water level
int val = 0;
void setup() {
// Set D7 as an OUTPUT
pinMode(sensorPower, OUTPUT);
// Set to LOW so no power flows through the sensor
digitalWrite(sensorPower, LOW);
Serial.begin(9600);
}
void loop() {
//get the reading from the function below and print it
int level = readSensor();
Serial.print("Water level: ");
Serial.println(level);
delay(1000);
}
//This is a function used to get the reading
int readSensor() {
digitalWrite(sensorPower, HIGH); // Turn the sensor ON
delay(10); // wait 10 milliseconds
val = analogRead(sensorPin); // Read the analog value form sensor
digitalWrite(sensorPower, LOW); // Turn the sensor OFF
return val; // send current reading
}

Explicația codului
Schița începe prin a declara pinii Arduino conectați la senzor. Pinul etichetat + (VCC) de pe senzor este conectat la pinul 7 de pe Arduino, iar pinul S (semnal) este conectat la pinul de intrare analogică A0.
Apoi, se creează o variabilă numită val pentru a stoca citirea senzorului, care reprezintă nivelul curent al apei.
În secțiunea setup(), îi spunem Arduino-ului să trateze pinul 7 ca ieșire, deoarece acesta va controla alimentarea senzorului. De asemenea, setăm acest pin la LOW la început pentru a ne asigura că senzorul este oprit când pornește programul. Apoi, începem comunicarea serială, astfel încât să putem trimite citirile către Monitorul Serial și să le vedem pe ecran.
În secțiunea loop(), o funcție personalizată numită readSensor() este apelată o dată pe secundă. Rezultatul acestei funcții este afișat pe Monitorul Serial ca citire a nivelului curent al apei.
Funcția readSensor() este locul unde are loc citirea propriu-zisă a senzorului. Pornește senzorul setând pinul de alimentare la nivelul HIGH, așteaptă 10 milisecunde pentru a-i da senzorului timp să se stabilizeze, citește valoarea analogică de la pinul de semnal, apoi oprește senzorul setând pinul de alimentare la nivelul LOW. În final, returnează valoarea citită, astfel încât programul principal să o poată utiliza.