Un interrupt è un evento asincrono ricevuto inaspettatamente da Arduino su uno dei suoi pin, in particolare Arduino Uno è abilitato a ricevere segnali di interrupt solo sui pin digitali 2 e 3. Un interrupt viene generato da una periferica nel momento in cui vuole richiedere l’attenzione istantanea di Arduino.

Infatti, la scheda una volta avviata e processato il blocco setup, esegue ciclicamente il codice presente all’interno di loop e potrebbe perdere alcuni cambiamenti esterni di breve durata. In alcune situazioni, però è necessario che una variazione esterna venga subito rilevata e gestita e quindi non è possibile attendere l’esecuzione dell’altro codice.

Funzioni per gestire gli interrupt

Nel programmare un Arduino le funzioni per gestire gli interrupt sono le seguenti:

  • attachInterrupt(interrupt, gestione, mode): viene automaticamente chiamata sospendendo ogni esecuzione del codice in corso. Il parametro interrupt indica quale dei due pin ha causato l’evento. Il parametro gestione indica quale funzione chiamare nel caso dello specifico interrupt (la funzione chiamata non deve ricevere parametri né restituire alcun valore). Il parametro mode indica qual è stata la causa dell’evento e può essere di quattro tipi:
    • LOW quando il livello del segnale diventa basso;
    • CHANGE quando il livello del segnale cambia;
    • RISING quando il livello del segnale passa da LOW ad HIGH;
    • FALLING quanto il livello del segnale passa da HIGH a LOW.
  • detachInterrupt(interrupt): disabilita la ricezione dell’interrupt sul pin ricevuto come parametro;
  • noInterrupts(): disabilita gli interrupt;
  • interrupts(): abilita gli interrupt.
Categorie: Informatica