Prototipo Arduino

Latest Comments

Una risposta

Il Nostro Prototipo Arduino

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

One response

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *