Tengo que escribir un boceto de Arduino para realizar algunas tareas con la cantidad de pulsos digitales detectados por un pin. Para este fin, elegí usar interrupciones para no perder ningún pulso y realizar el resto del algoritmo virtualmente al mismo tiempo.
Para hacer una prueba rápida, puse este circuito:
ycarguéesteboceto(segúnelejemploenlaattachInterrupt
documentation ):
volatile unsigned int pulses=0;
void setup() {
attachInterrupt(0, countpulses, FALLING); // interrupt 0 = pin 2
Serial.begin(9600);
}
void loop() {
Serial.println(pulses);
delay(500);
}
void countpulses() {
pulses++;
}
Lo que esperaba aquí es que cada vez que presiono y suelto el interruptor (y el led rojo se enciende y apaga), debe leer un pulso. Lo extraño es que cuenta dos pulsos en su lugar, es decir, cuenta un pulso para cada cambio de estado en lugar de solo para el que "cae".
¿Esto es una cuestión de código o se debe al interruptor? ¿Tendré el mismo problema al manejar señales digitales directas en el pin 2?