Interrupciones en Arduino
Una ISR corre al instante en que el pin cae, en pleno loop.
// An interrupt routine runs the instant the pin falls, mid-loop.
const int FLOW_PIN = 2;
volatile unsigned long pulses = 0;
void countPulse() {
pulses++; // keep ISRs short; volatile shares the count safely
}
void setup() {
pinMode(FLOW_PIN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(FLOW_PIN), countPulse, FALLING);
Serial.begin(9600);
}
void loop() {
Serial.print("Flow pulses: ");
Serial.println(pulses);
delay(1000);
}
Cómo funciona
attachInterruptata el flanco de bajada del pin acountPulse.volatilele avisa al compilador que la ISR cambiapulses.- ISRs cortas: incrementa, sal, reporta desde loop.
Palabras clave y builtins usados aquí
INPUT_PULLUPconstintlongloopsetupunsignedvoidvolatile
El intento, en números
- Líneas
- 20
- Caracteres a escribir
- 439
- Tokens
- 84
- Ritmo de tres estrellas
- 60 tpm
Al ritmo de tres estrellas de 60 tokens por minuto, este intento toma unos 84 segundos.
Paso 1 de 3 en Periféricos; paso 22 de 27 en Fundamentos del lenguaje.