| 
View
 

Practica1_cocheFantastico

Page history last edited by Lucio 14 years, 9 months ago

 

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.