Ejercicio 4: Flash
Los 4 LEDs parpadean al unísono.
| Novedades hardware | Novedades 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?.