EJERCICIO 2:
El coche fantástico
Descripción del ejercicio
Hemos denominado este ejemplo como "El coche fantástico" en memoria de ka serie de TV de los años 80 en la que el famoso David Hasselhoff tenía una máquina de IA conduciendo su Pontiac. El coche estaba equipado con gran cantidad de LED-s de todos los tamaños posibles que realizaban efectos parpadeantes.
De esta manera hemos decidido, con el objetivo de aprender programación secuencial y buenas técnicas para programar la placa E/S, sería interesante usar el coche fantástico como una metáfora.
Este ejemplo hace uso de 6 LED-s conectados a los PIN 2 a 7 de la placa mediante resistencias de 220 Ohmios. El primer código de ejemplo hace parpadear a los LED en secuencia de uno en uno, utilizando sólo las funciones digitalWrite(pinNum,HIGH/LOW) y delay(time). El segundo ejemplo muestra como usar una secusncia de control for(;;;) para hacer lo mismo, pero en menos líneas de código. El tercer ejemplo se centra en el efecto visual de apagar y encender los LED-s de una forma más suave. El cuarto y último ejemplo de nuevo, nos realiza lo mismo de forma sencilla con 4 leds.
Elementos necesarios:
- 6 LED-s.
- 6 resistencias de 220 Ohmios.
- Una placa protoboard.
- Cables para realizar las conexiones.
Esquema
Ejemplo para los fan de David Hasselhoff
Código fuente
Ejemplo 1
/* El coche fantástico 1
* ---------------------
*
* Basicamente una extensión del LED parpadeante.
*/
int pin2 = 2; // PIN-es de los LED
int pin3 = 3;
int pin4 = 4;
int pin5 = 5;
int pin6 = 6;
int pin7 = 7;
int timer = 100; // Temporizador
void setup(){
pinMode(pin2, OUTPUT); // Configuración de los PIN-es como salida
pinMode(pin3, OUTPUT);
pinMode(pin4, OUTPUT);
pinMode(pin5, OUTPUT);
pinMode(pin6, OUTPUT);
pinMode(pin7, OUTPUT);
}
void loop() {
digitalWrite(pin2, HIGH); // Enciende y apaga secuencialmente los LED-s
delay(timer);
digitalWrite(pin2, LOW);
delay(timer);
digitalWrite(pin3, HIGH);
delay(timer);
digitalWrite(pin3, LOW);
delay(timer);
digitalWrite(pin4, HIGH);
delay(timer);
digitalWrite(pin4, LOW);
delay(timer);
digitalWrite(pin5, HIGH);
delay(timer);
digitalWrite(pin5, LOW);
delay(timer);
digitalWrite(pin6, HIGH);
delay(timer);
digitalWrite(pin6, LOW);
delay(timer);
digitalWrite(pin7, HIGH);
delay(timer);
digitalWrite(pin7, LOW);
delay(timer);
digitalWrite(pin6, HIGH);
delay(timer);
digitalWrite(pin6, LOW);
delay(timer);
digitalWrite(pin5, HIGH);
delay(timer);
digitalWrite(pin5, LOW);
delay(timer);
digitalWrite(pin4, HIGH);
delay(timer);
digitalWrite(pin4, LOW);
delay(timer);
digitalWrite(pin3, HIGH);
delay(timer);
digitalWrite(pin3, LOW);
delay(timer);
}
Ejemplo 2
/* El coche fantástico 2
* ---------------------
*
* Reduciendo las líneas de código usando un for(;;).
*
*
*/
int pinArray[] = {2, 3, 4, 5, 6, 7}; // Define el array de pines
int count = 0; // Contador
int timer = 100; // Temporizador
void setup(){
for (count=0;count<6;count++) { // Configuramos todas los PIN-es de golpe
pinMode(pinArray[count], OUTPUT);
}
}
void loop() { // Enciende y apaga secuencialmente los LED-s
for (count=0;count<6;count++) { // utilinzado la secuencia de control for(;;)
digitalWrite(pinArray[count], HIGH); // Recorrido de ida
delay(timer);
digitalWrite(pinArray[count], LOW);
delay(timer);
}
for (count=5;count>=0;count--) {
digitalWrite(pinArray[count], HIGH); // Recorrido de vuelta
delay(timer);
digitalWrite(pinArray[count], LOW);
delay(timer);
}
}
Ejemplo 3
/* El coche fantástico 3
* ---------------------
*
* Este ejemplo se centra en el efecto visual.
*
*
*/
int pinArray[] = {2, 3, 4, 5, 6, 7}; // PIN-es
int count = 0; // Contador
int timer = 30; // Temporizador
void setup(){
for (count=0;count<6;count++) { // Configuramos todas los PIN-es de golpe
pinMode(pinArray[count], OUTPUT);
}
}
void loop() {
for (count=0;count<5;count++) { // Enciende los LED creando una estela visual
digitalWrite(pinArray[count], HIGH);
delay(timer);
digitalWrite(pinArray[count + 1], HIGH);
delay(timer);
digitalWrite(pinArray[count], LOW);
delay(timer*2);
}
for (count=5;count>0;count--) {
digitalWrite(pinArray[count], HIGH);
delay(timer);
digitalWrite(pinArray[count - 1], HIGH);
delay(timer);
digitalWrite(pinArray[count], LOW);
delay(timer*2);
}
}
Ejemplo 4
El coche fantástico 4
Se tiene que conseguir el mismo efecto de las luces del coche de la serie de tv.
Componenentes:
- 4 LED-s.
- 4 resistencias de 220 Ohmios.
- Una placa protoboard.
- Cables para realizar las conexiones.
PROGRAMA
void setup() {
// initialize the digital pin as an output:
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
pinMode(8, OUTPUT);
}
void loop()
{
digitalWrite(11, HIGH); // set the LED on
delay(250); // wait for a second
digitalWrite(11, LOW);
digitalWrite(10, HIGH); // set the LED off
delay(250);
digitalWrite(10, LOW);
digitalWrite(9, HIGH);
delay(250);// wait for a second
digitalWrite(9, LOW);
digitalWrite(8, HIGH);
delay(250);
digitalWrite(8, LOW);
digitalWrite(8, HIGH);
delay(250);
digitalWrite(8, LOW);
digitalWrite(9, HIGH); // set the LED on
delay(250); // wait for a second
digitalWrite(9, LOW);
digitalWrite(10, HIGH); // set the LED off
delay(250);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
delay(250);// wait for a second
digitalWrite(11, LOW);
}
Comments (0)
You don't have permission to comment on this page.