Scusami Leo, non sapevo si potesse fare in "postproduzione", non pratico molto i forum. Starò più attento la prossima volta.
Comunque, ho provato a modificare il mio codice come mi facevate presente, ma nada, nisba, non va. O meglio, quando apro il monitor seriale continua a dare valori crescenti in funzione del delay utilizzato. Conta a priori qualcosa.
Ho provato comunque a modificare un po' il codice utilizzando gli interrupt, però adesso sono senza arduino e quindi non ho la possibilità di testarlo. Vi posto alla fine il risultato. Mi scuso già da adesso se ho scritto qualche castroneria, ma mi sto cimentando da poco con questo linguaggio.
Per quello che riguarda invece l'alimentazione, collegando un apposito alimentatore che permette di leggere anche dei segnali in ingresso, ho notato che al passaggio del litro di acqua, arriva effettivamente un impulso sotto forma corrente (se non sbaglio un valore variabile intorno a 0.05 A). Questo non vuol dire nulla? cioè devo comunque usare il tutto senza alimentazione??
PS ho trovato su internet uno sketch che legge un segnale in ingresso, tramite un pulsante, accendendo il led sul pin 13 di arduino mega. Essendoci anche lo schema disegnato con fritzing, ho provato a collegare il mio sensore di portata al posto del pulsantino e lanciando lo stesso programma. Mi aspettavo che al passaggio del litro, e quindi all'invio dell'impulso, si accendesse il led, ma anche questa volta non va. Non saprei come risolverlo.
Se posso aggiungere un collegamento ad un link esterno vi faccio vedere come è realizzato il collegamento.
int impulso=52;
long tempo_trascorso;
long durata;
volatile int contatore = LOW ;
void routine_di_servizio ()
{
durata=millis()-tempo_trascorso;
tempo_trascorso=millis();
}
void setup()
{
pinMode(impulso, OUTPUT);
attachInterrupt (0,conta,RISING);
attachInterrupt (0,routine_di_servizio,RISING);
Serial.begin( 9600 );
Serial.println( "Misuratore portata: ");
}
void loop()
{
digitalWrite (impulso,contatore);
}
void conta()
{
contatore ++;
}