Hi, this is a comment.
To get started with moderating, editing, and deleting comments, please visit the Comments screen in the dashboard.
Commenter avatars come from Gravatar.

Il nostro progetto Arduino consiste in un sistema di irrigazione che grazie a un sensore di umidità del terreno che a certo valore si capisce la siccità o l’umidità del terreno, in base a queste informazioni si può capire quando accendere il relè collegato a una pompa elettrica che porta l’acqua alla pianta con tanto di schermo che mostra il valore del terreno e se la pompa è attiva o inattiva e con un sistema di . qui sotto si trova il codice per girare il progetto:
#include <LiquidCrystal.h>
// Configurazione dello schermo LCD (RS, EN, D4, D5, D6, D7)
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
// Pin del sensore di umidità e del relè della pompa
int pinSensore = A0;
int pinPompa = 8; // Pin 8 perché i pin 2-7 sono usati dal display
void setup() {
// Imposta il pin della pompa come uscita
pinMode(pinPompa, OUTPUT);
// Pompa SPENTA all'avvio (HIGH = spento per la maggior parte dei relè)
digitalWrite(pinPompa, HIGH);
// Inizializza il display LCD 16 colonne x 2 righe
lcd.begin(16, 2);
// Messaggio di avvio (utile per sapere quando il sistema è partito)
lcd.setCursor(0, 0);
lcd.print("Sistema Irrigazione");
lcd.setCursor(0, 1);
lcd.print("Avvio...");
delay(2000);
lcd.clear();
}
void loop() {
// Legge il sensore 5 volte e fa la media per avere una lettura più stabile
long somma = 0;
for (int i = 0; i < 5; i = i + 1) {
somma = somma + analogRead(pinSensore);
delay(5); // piccola pausa tra una lettura e l'altra
}
int valore = somma / 5; // calcolo della media
// ================== CALCOLO PERCENTUALE ==================
// Converte il valore grezzo in percentuale (valori calibrati per il tuo sensore)
int percentuale = map(valore, 566, 212, 0, 100);
// Sicurezza: forza la percentuale tra 0 e 100
if (percentuale < 0) percentuale = 0;
if (percentuale > 100) percentuale = 100;
// ================== VISUALIZZAZIONE UMIDITÀ ==================
lcd.setCursor(0, 0);
lcd.print("Umidita: ");
lcd.print(percentuale);
lcd.print("% "); // spazi per cancellare eventuali vecchi numeri
// ================== CONTROLLO POMPA (ISTERESI) ==================
// Legge lo stato attuale della pompa
int statoPin = digitalRead(pinPompa);
// Accende la pompa se è spenta e l'umidità è troppo bassa
if (statoPin == HIGH && percentuale < 32) {
digitalWrite(pinPompa, LOW);
}
// Spegne la pompa se è accesa e l'umidità è sufficientemente alta
if (statoPin == LOW && percentuale > 75) {
digitalWrite(pinPompa, HIGH);
}
// ================== VISUALIZZAZIONE STATO POMPA ==================
// Mostra lo stato della pompa sulla seconda riga
lcd.setCursor(0, 1);
if (digitalRead(pinPompa) == LOW) {
lcd.print("POMPA: ACCESA ");
} else {
lcd.print("POMPA: SPENTA ");
}
delay(5000); // Aspetta 5 secondi prima di ripetere il ciclo
}
Se individuate errori o volete darci qualche consiglio a fine di migliorare il codice lasciate un commento qua sotto!
#PlantyDrop
Hi, this is a comment.
To get started with moderating, editing, and deleting comments, please visit the Comments screen in the dashboard.
Commenter avatars come from Gravatar.
Una risposta
Hi, this is a comment.
To get started with moderating, editing, and deleting comments, please visit the Comments screen in the dashboard.
Commenter avatars come from Gravatar.