Interferenze Interrupt

Ciao a tutti,
ho costruito un sistema che gestisce 3 interrupt con un Arduino MEGA.

const int pin_button = 2;                                                   
const int pin_reed_2 = 18;                                                  
const int pin_reed_1 = 19;                                      

volatile int d=0;                                                           
volatile int p=0;                                                           
volatile boolean Button_State = LOW;                                                                                         

void setup() {
  Serial.begin(9600);
  pinMode(pin_reed_2, INPUT);                                             
  pinMode(pin_reed_1, INPUT);                                              
  pinMode(pin_button, INPUT);                                                                    
  attachInterrupt(0, Button, CHANGE);                                          
  attachInterrupt(4, reed1, RISING);
  attachInterrupt(5, reed2, RISING);     
}

void reed1()  {                                                        
  d++;                                                                      
 }

void reed2(){                                                          
  p++;                                                                    
}

void Button() {
  Button_State = HIGH;
}

void print_AT_serial(){
  Serial.print("ON; ")&&Serial.print(d)&&Serial.print(";")&&Serial.println(p);
    d=0;
    p=0;
}

void loop() {
 if (Button_State == HIGH) {
  print_AT_serial();
 }
 else {
  Serial.println("OFF");
 }
  Button_State = LOW;
  delay(3000);
}

L'output è che ogni 3 secondi mi scrive a seriale "OFF" a meno che non abbia pigiato il pulsante; in quel caso mi scrive "ON; d;p" dove d e p sono i contatori degli altri 2 interrupt.

Il problema è che se anche non avviene nessun evento che dovrebbe incrementare d e p, quando pigio il pulsante in output mi stampa d e p con valori casuali.

Per entrambi i PIN con contatore (18 e 19) ho costruito un circuito antirimbalzo; infatti se provo ad incrementare con il loro vero circuito funzionano bene.

Grazie

>valdarno8: in conformità al REGOLAMENTO della sezione Italiana del Forum, punto 13, il cross-posting è proibito (anche tra lingue diverse) e tu stai parlando della stessa cosa già QUI.

Ti prego, per il futuro, di evitare di aprire più thread sullo stesso argomento in sezioni differenti del forum; questo thread viene chiuso e tu puoi continuare dove già ne stavi parlando.

Guglielmo