Interruzioni.
// ====== INTERRUZIONI ======
// Leggi di più qui.
attachInterrupt(pin, ISR, mode);
/*
Collega interrupt al pin del numero di interrupt, assegna la funzione ISR come gestore e imposta la modalità di interruzione su mode:
RISING - attivato quando il segnale cambia da LOW ad HIGH.
FALLING - attivato quando il segnale cambia da HIGH a LOW.
CHANGE - attivato quando il segnale cambia (da LOW ad HIGH e viceversa).
LOW - Attivato costantemente quando viene segnalato LOW (non supportato su ESP8266).
*/
// ====== ESEMPIO ======
volatile int counter = 0; // variabile.
void setup()
{
Serial.begin(9600); // aprire la porta di comunicazione.
// collegato il pulsante a D2 e GND.
pinMode(2, INPUT_PULLUP);
/*
D2 è interrupt
0.
Gestore (ISR) - funzione buttonTick.
FALLING - quando premi il pulsante, ci sarà un segnale 0 e lo prendiamo.
*/
attachInterrupt(0, buttonTick, FALLING);
}
void loop()
{
Serial.println(counter); // dedurre.
delay(1000); // aspettiamo.
}
void buttonTick()
{
counter++; // premere.
}