Ciao a tutti 
Da poco nella mia villetta l'idraulico ha rimesso in funzione la cisterna per l'irrigazione..
Ho pensato di creare un sistema in grado di dirmi il livello dell'acqua
Ho già ordinato su eBay il sensore ad ultrasuoni ed il display ma mi chiedevo se il codice che ho preparato è giusto:
#include <LiquidCrystal.h> //libreria lcd
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //pin lcd
int Impulso(9);
int Lettura(10);
int Distanza;
int Percentuale1;
int Percentuale;
int Tempo;
int Elettrovalvola(8);
void setup() {
lcd.begin(16, 2); //dimensioni lcd 16x2 caratteri
pinMode (Impulso, OUTPUT);
pinMode (Lettura, INPUT);
}
void loop() {
digitalWrite(Impulso ,HIGH); //emetto il segnale a ultrasuoni
delay(100);
digitalWrite(Impulso, LOW); //spengo il segnale a ultrasuoni
Tempo = pulseIn(Lettura, HIGH); //memorizza il tempo dell'arrivo della risposta
Distanza = Tempo/58; //Formula Distanza=tempo*V/2 dove v è 343,5 m/s
Percentuale1 = Distanza*3; //d*tot
Percentuale = Percentuale1/100;
lcd.clear();
lcd.print("Percent. = ");
lcd.print(Percentuale, 100);
lcd.print("%");
if(Percentuale == 5<1){
lcd.setCursor(0, 1);
lcd.print("Rabbocco Acceso");
digitalWrite(Elettrovalvola, HIGH);
}
}
Grazie in anticipo
Salvo
- Questo è errato, le variabili le inizializzi con var=99;
int Impulso(9);
int Lettura(10);
int Elettrovalvola(8);
Deve essere:
const byte Impulso=9;
const byte Lettura=10;
const byte Elettrovalvola=8;
-
Poi hai 3 pin, perciò nella setup definisci il pinMode() anche per Elettrovalvola (ti manca).
-
Accendi la valvola ma una volta fatto, non la spegni più. Manca qualcosa nella logica.
Vedi questo esempio, qui accende/spegne un led:
http://arduinobasics.blogspot.it/2012/11/arduinobasics-hc-sr04-ultrasonic-sensor.html
Quindi così non ci sono errori? 
#include <LiquidCrystal.h> //libreria lcd
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //pin lcd
const byte Impulso=9;
const byte Lettura=10;
const byte Elettrovalvola=8;
int Distanza;
int Percentuale1;
int Percentuale;
int Tempo;
void setup() {
lcd.begin(16, 2); //dimensioni lcd 16x2 caratteri
pinMode (Impulso, OUTPUT);
pinMode (Lettura, INPUT);
pinMode (Elettrovalvola, OUTPUT);
}
void loop() {
digitalWrite(Impulso ,HIGH); //emetto il segnale a ultrasuoni
delay(100);
digitalWrite(Impulso, LOW); //spengo il segnale a ultrasuoni
Tempo = pulseIn(Lettura, HIGH); //memorizza il tempo dell'arrivo della risposta
Distanza = Tempo/58; //Formula Distanza=tempo*V/2 dove v è 343,5 m/s
Percentuale1 = Distanza*3; //d*tot
Percentuale = Percentuale1/100;
lcd.clear();
lcd.print("Percent. = ");
lcd.print(Percentuale, 100);
lcd.print("%");
if(Percentuale == 5<1){
lcd.setCursor(0, 1);
lcd.print("Rabbocco Acceso");
digitalWrite(Elettrovalvola, HIGH);
}
else{
lcd.setCursor(0, 1);
lcd.print("Rabbocco Spento");
digitalWrite(Elettrovalvola, LOW);
}
}
L'ho visto ora, cosa dovrebbe fare questo test? (è errato sintatticamente)
if(Percentuale == 5<1){
se Percentuale uguale a 5 if(Percentuale==5)
se Percentuale minore di 1 if(Percentuale<1)
se Percentuale minore o uguale a 5 if(Percentuale<=5)