En este ejemplo vamos a utilizar un pulsador conectado entre GPIO12 y masa para que, cuando lo pulsemos, se produzca un interrupción y cambie el estado de un led.
El esquema completo es el siguiente:
En primer lugar, hay que definir el pin en el que se producirá la interrupción:
#define BUTTON 12 //pulsador en GPIO12 (D6)
En setup() debemos indicar que el pin definido anteriormente va a realizar funciones de interrupción:
pinMode(BUTTON, INPUT_PULLUP);
El modo INPUT_PULLUP hace que se utilicen las resistencias pull-up internas del módulo conectadas a Vcc. De este modo, el pin se encuentra a nivel alto en condiciones normales y cuando pulsamos el nivel pasa a 0v.
Por último, hay que indicar la función que se ejecutará cuando se produzca la interrupción:
attachInterrupt(BUTTON,parpadeo,FALLING);
En este caso, la interrupción se produce durante el flanco de bajada de la señal. Existen otros modos:
- LOW: cuando pasa a nivel bajo
- CHANGE: cuando cambia de valor
- RISING: en el flanco de subida
La función parpadeo lo que hace es alternar el valor de la variable estado y en loop() enciende o apaga el led dependiendo del estado de dicha variable.
El código completo es el siguiente:
#define BUTTON 12 //botón en GPIO12 (D6)#define LED 16 // GPIO16 (D0)volatile int estado = HIGH; //estado inicialvoid setup() { pinMode(LED,OUTPUT); digitalWrite(LED,LOW);delay(2000);pinMode(BUTTON, INPUT_PULLUP); attachInterrupt(BUTTON,parpadeo,FALLING); }}void parpadeo() { estado = !estado; } void loop() {digitalWrite(LED,estado);
Fuentes:
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.