Aiuto!!! Mi rendo conto che sono proprio alle prime armi.... forse sto cercando di fare qualcosa che ancora non mi compete... però ho bisogno di sviluppare questa applicazione.
Alcune cose del primo codice che mi ha inviato Paolo non le ho capite bene e non ha capito se devo integrarle insieme a quelle inviate nella seconda parte. Io sono arrivato a fare questo, mi sembrava potesse funzionare, il display indica qualche numero che varia soffiando nel contalitri ma poi ad esempio rimane con dei numeri fissi anche quando il contalitri è fermo. Ecco il codice:
// 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;
volatile byte impulse;
unsigned long timeold;
// 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
timeold=millis();
}
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
impulse++;
}
}
else {
digitalWrite (8,LOW); // spegnimento led esterno
stato=0; // cambio stato per verifica ritorno impulso
}
if (impulse >= 27) {
impulse=0;
litrimin=27.0/270.0*60.0*1000.0/(float) (millis()-timeold);
timeold=millis();
}
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
}
Se c'è qualche buon'anima che sistema il codice e lo mette per intero mi fa un immenso piacere, così poi leggendolo riesco a capire bene il funzionamento globale...
Comunque grazie ancora a tutti per l'aiuto.