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