Paso 6: Interrumpimos este programa!
Parece complicados y se hace más así por el hecho de que hay un montón de información acerca de estos Arduino implementa interrupciones que sólo parecen funcionar en las patillas 1 y 2. Me enteré de una interrupción de nivel más profundo llamada una interrupción de AVR que puede funcionar independientemente del número de pin. Parece algo complicados porque todo están escrito en un código de bajo nivel que sólo se ve como gobbldygook pero he encontrado el código aquí en el Wave Adafruit protector ejemplos.
Se empieza por «incluidas» AVR en el comienzo del boceto
#include < avr/pgmspace.h > //so podemos programar utilizando código AVR
Luego se activa la interrupción como esta...
interrupción AVR initalize
TCCR2A = 0;
TCCR2B = 1 << CS22 | 1 << CS21 | 1 << CS20;
Permiten interrumpir el desbordamiento del TIMER2
TIMSK2 | = 1 << TOIE2;
(Ya sé, derecha?)
Luego se identifica una función activada por la interrupción
la interrupción que se ejecuta en paralelo con la función de lazo y calle la función check_button()
{Signal(TIMER2_OVF_vect)}
check_button();
}
Luego se programa la función
}
void check_button() {}
buttonState = digitalRead(buttonPin);
Si (buttonState == alto & & previousButtonState == LOW) {}
buttonPressed = 1; Utilice esta variable global a la función loop que se presiona el botón
previousButtonState = alto; establecer el estado de botón previou al estado actual del botón
}
if(buttonState == Low) {}
buttonPressed = 0; Dile a la funcion de loop que no se presiona el botón
previousButtonState = bajo; establecer la buttonState anterior al estado actual del botón
}
}
Ahora cuando la ve de interrupción que el botón ha sido pulsado lo enciende la música y las luces!