Ejercicio 4: Flash

Los 4 LEDs parpadean al unísono.

Novedades hardwareNovedades software
 Declaración y uso de cadenas
 Iteración con for para recorrer la cadena de salidas

Requisitos: Cinco diodos luminosos LED, cuatro resistencias de 220 ohmios.

Planteamiento: Todos los LEDs producen destellos a la vez.

Presentación de: Cadenas de variables de argumento entero. Su definición y uso indepente y ligado a iteraciones con for.

Este es un ejercicio para entender el concepto de cadena o lista ordenada o ntupla o vector, como también se podría llamar.

Los alumnos deben conocerlo, al menos por el uso de sistemas de coordenadas, pero nunca está de más hacer un ejercicio que lo muestre de forma muy explícita.

En éste, recorremos los valores de la cadena con una iteración, mostrando así uno de los usos más extendidos de la iteración con for. En este caso, nos servirá para configurar de una forma económica las salidas digitales.

Por otro lado, usamos individualmente los elementos de la cadena de una forma explícita en la definición del procedimiento para reforzar la asociación entre la posición que se ocupa en la cadena y el valor que tienen.

Debemos notar cómo al estar dentro del bucle infinito definido por void loop( ) el flash se repite indefinidamente hasta que reseteemos la placa.

Variaciones:

  • Usar una iteración con for para encender los LEDs y otra para apagarlos

VIDEO DEL EJERCICIO 4

VIDEO DEL EJERCICIO 4 (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};         //Definición de la lista que contiene los PIN a  los que se 
 int tiempo=200;                     // conectan los LEDs
 int n=0;
 void setup (){          
   for(n=0;n<4;n++){                 //Iteración que recorre cada posición de la  lista 
     pinMode(cadenaLeds[n],OUTPUT);  //configurando el PIN correspondiente al valor que está
   }                                 //en esa posición como una salida digital
 }
 void flash(){
   digitalWrite(cadenaLeds[0],HIGH); //Envía 5 V al PIN cuyo nº está en la primera  posición de la lista
   digitalWrite(cadenaLeds[1],HIGH); //Envía 5 V al PIN cuyo nº está en la segunda posición de la lista
   digitalWrite(cadenaLeds[2],HIGH); //Envía 5 V al PIN cuyo nº está en la tercera posición de la lista
   digitalWrite(cadenaLeds[3],HIGH); //Envía 5 V al PIN cuyo nº está en la cuarta posición de la lista
   delay(tiempo);
   digitalWrite(cadenaLeds[0],LOW);
   digitalWrite(cadenaLeds[1],LOW);
   digitalWrite(cadenaLeds[2],LOW);
   digitalWrite(cadenaLeds[3],LOW);
   delay(tiempo);
 }
   void loop(){
   flash();
 }

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