Problemi con Skatch pe Pluviometro

Ciao A tutti e grazie per la vostra attenzione. Sto cercando di realizare un pluviometro con interrupt ma, non risco a capire il perchè non mi somma i valori ad ogni basculata, continua a darmi valore 0.2... Cosa Sbaglio?? ecco lo skatch

void setup() {
  //start serial connection
  Serial.begin(9600);
  int interrupt_pin = 2;

  
}

void loop() {
  
   attachInterrupt(0, Basculata, CHANGE);
   
}

void Basculata(){
  noInterrupts();
  boolean blnWrite=false;
  float TotPioggia;
  TotPioggia=TotPioggia+0.2; //conta la pioggia
  Serial.println(TotPioggia);
  blnWrite=true;   

}

Perchè dichiari la variabile TotPioggia nella void Basculata, quindi hai come visibilità la sola subroutine, ma soprattutto che ad ogni chiamata tale variabile viene reinizializzata.

Prova a portare la dichiarazione fuori dalla sub. :wink:

Riattivare gli interups aiuta anche. Ciao Uwe

@Uwe: l'interrupt lo riattiva nel loop. Casomai lo riattiva anche troppo dato che ad ogni ciclo viene eseguito attachInterrupt :stuck_out_tongue_closed_eyes:

@davrigo: appunti: - metti attachInterrupt nel setup, così viene eseguito solo una volta - togli noInterrupts da entro la routine Basculata, è assolutamente inutile. Sei dentro ad una ISR (Internet Service Routine) e per default il compilatore le compila "atomiche", ossia NON interrompibili. Mettendo noInterrupt tu disabiliti gli interrupt dentro ad una cosa in cui gli interrupt sono già disabilitati - togli il Serial.print da dentro la ISR, non è cosa buona fare la stampa da lì, metti il print dentro al loop.

Comunque ritengo non necessario usare un interrupt per controllare un Pluviometro. Quello intervene se piove proprio a secch solo qualche volta al minuto e il suo sensore resta chiuso per parecchio tempo ( questo dipende dalla costruzione. se é a monovasca basculante o a 2. Basta un controllo all' interno del loop.

Ciao Uwe