Interrupt multipli su Arduino

Ciao a tutti, sto sviluppando su Arduino Mega e sto provando la gestione degli Interrupt.
Per ora mi sto limitando a cambiare lo stato di un led quando viene schiacciato un pulsante, ma ho un problema:
essendo il contatto fisico del pulsante non esattamente perfetto al momento della pressione/rilascio vengono visti più fronti di salita discesa, come se il pulsante venisse premuto più volte, cambiando più di una volta lo stato del led.
Ho letto che si possono disabilitare gli interrupt attraverso la delayMicroseconds, ma pur procedendo così non ottengo cambiamenti

loop()
{
....
    attachInterrupt(pbIn, accendi_manuale, FALLING);
...

}


void accendi_manuale()
{
  state = !state;
  digitalWrite(led, state);
  delayMicroseconds(3000000);
}

Come potrei fare?

Grazie! :smiley:

NON mettere delay in una ISR (routine di gestione di un interrupt).
Risolvi o a livello hardware, mettendo un filtro antirimbalzo sul pulsantino (c'è una delle schede di pighixxx che mostra alcune soluzioni in tal senso) oppure nella ISR metti la lettura del pulsante o poi il detachInterrupt, in modo da leggere solo un rimbalzo, staccare l'interrupt, eseguire quel che devi da codice principale e poi riattaccare l'interrupt.

PS:
comunque un interrupt per leggere un pulsante non è proprio indicato, per i problemi che hai riscontrato anche tu.