Ejercicio 5: Dispara el Flash

Cuando se presiona el pulsador los 4 LEDs parpadean a la vez.

Novedades hardwareNovedades 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?.