Ejercicio 5: Dispara el Flash
Cuando se presiona el pulsador los 4 LEDs parpadean a la vez.
| Novedades hardware | Novedades software |
| Resistencia de ”pull-down” | Condicional sobre el estado de la entrada digital |
Requisitos:
- Cinco diodos luminosos LED, cuatro resistencias de 220 ohmios.
- Un pulsador
- Una resistencia de 1Kohmio.
Planteamiento: El flash lanzará destellos mientras tengamos presionado el pulsador.
'''
Presentación de:'''
- Conexión de un pulsador normalmente abierto a la placa.
- Resistencia de “pull down”.
- Lectura de una señal de entrada digital.
- Condicional con el comando if aplicado al estado de una entrada digital.
La estructura condicional ...
if(condición){
comandos
}
... se ejecuta así:
- Si se cumple la condición, en este caso que lleguen 5V a la entrada digital del PIN 5, es decir, lo que ocurre cuando tenemos presionado el pulsador, se ejecutan los comandos que estén entre las llaves.A continuación se sigue ejecutando el código que vaya después.
- Si no se cumple la condición, no se ejecutan los comandos que estén entre las llaves y siguen ejecutándose los que están detrás.
Hay que tener muy en cuenta que, al estar dentro del bucle infinito definido por void loop( ), el condicional comprueba si se cumple o no la condición una vez cada ciclo, lo que es extraordinariamente rápido si no hay código que lo ralentice expresamente, con lo que el flash se repite mientras mantengamos presionado el pulsador.
Variaciones:
- Simular un pulsador normalmente cerrado: el flash se va disparando sólo y se mantiene apagado mientras tenemos presionado el pulsador.
VIDEO DEL EJERCICIO 5
VIDEO DEL EJERCICIO 5 (versión para el montaje del SIMON)
CODIGO FUENTE
Copyright (C) 2006 Juan Carlos Alonso de Mena
This program is free software; you can redistribute it and/or modify it under the terms
of the GNU General Public License as published by the Free Software Foundation;
See the GNU General Public License for more details?
int cadenaLeds[]={6,7,8,9};
int puls=5; //Declaración de la variable que guarda el nº del PIN al que
int tiempo=200; // se conecta el pulsador
int n=0;
void setup (){
for(n=0;n<4;n++){
pinMode(cadenaLeds[n],OUTPUT);
}
pinMode(puls,INPUT); //Configuración del PIN cuyo nº guarda la variable puls
} // como salida digital
void flash(){
for(n=0;n<4;n++){
digitalWrite(cadenaLeds[n],HIGH);
}
delay(tiempo);
for(n=0;n<4;n++){
digitalWrite(cadenaLeds[n],LOW);
}
delay(tiempo);
}
void loop(){
if(digitalRead(puls)==HIGH){ //Condicional que se ejecuta cuando detecta el pulsador
flash(); // presionado
}
}
Volver?
Copyright (c) 2006 Juan Carlos Alonso de Mena
Permission is granted to copy, distribute and/or modify this document under the terms of
the GNU Free Documentation License, Version 1.2 or any later version published by the
Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no
Back-Cover Texts. A copy of the license is included in the section entitled
GNU Free Documentation License?.