Ciao a tutti,
utilizzo Arduino da qualche giorno e non riesco a risolvere un problema.
Sto realizzando un contalitri con un sensore che invia 270 impulsi per ogni litro di acqua passato e fino ad ora ho realizzato lo sketch per il conteggio totale dei litri passati, con pulsante esterno per l'azzeramento. Fin qui tutto bene.
Ora vorrei visualizzare anche la portata istantanea, cioè quanti litri al minuto stanno passando dentro al sensore.
Sono due giorni che ci provo cercando di utilizzare la funzione millis() (che non è proprio semplice da gestire per un neofita...) ma non riesco a cavarmela... Qualcuno mi può aiutare? Vi riporto di seguito il codice che ho fatto fino ad ora
// Contalitri con display e visualizzazione totale litri
// con tasto per azzeramento e visualizzazione portata (lt/min.)
// Libreria display
#include <LiquidCrystal.h>
//Variabili
int x=0;
float cont=0;
int stato=0;
int reset=0;
float litrimin=0;
float visual=0;
// Iniziazione libreria con numeri pin
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2); // set numero colonne e righe display
pinMode (7,INPUT); // impulso da contalitri
pinMode (8,OUTPUT); // led esterno
pinMode (9,INPUT); // pulsante reset conteggio litri
Serial.begin(9600); // apertura porta seriale
}
void loop() {
reset=digitalRead(9); // assegnazione pin tasto reset
if (reset==1){ // arrivo impulso reset
cont=0; // reset contalitri
lcd.clear(); // reset lcd
}
x=digitalRead(7); // variabile impulso da contalitri
if(x==HIGH) { // arrivo impulso contalitri
digitalWrite (8,HIGH); // accensione led esterno
if(stato==0) { // conteggia solo se ritorna l'impulso
cont=(cont+1); // conteggio impulsi
stato=1; // cambio stato per verifica ritonro impulso
}
}
else {
digitalWrite (8,LOW); // spegnimento led esterno
stato=0; // cambio stato per verifica ritorno impulso
}
visual=cont/270; // conversione impulsi in litri
lcd.setCursor(0, 0); // posizionamento cursore display
lcd.print("Lt. Tot: "); // scritta
lcd.print(visual); // visualizzazione valore litri
lcd.setCursor(0, 1); // posizionamento cursore display
lcd.print("Lt. Min: "); // scritta
lcd.print(litrimin); // visualizzazione lt. ora ??????
Serial.println(cont); // visualizzazione impulsi su serial monitor
}
Grazie, Michele.