jueves, 26 de diciembre de 2013

Arduino efecto coche fantastico

En la web oficial de arduino me he encontrado estos egemplos que hacen los mismo de mi post anterior y yo los he modificado para hacer mi propia versión:



Código:

/*
Autor: Aitor Martin
Fecha: 26-12-2013
Titulo: Efecto coche fantastico
Placa: Arduino uno
Post: http://aitormartin-apuntes.blogspot.com.es/2013/12/arduino-efecto-coche-fantastico.html

Código de dominio publico. Se puede distribuir y modificar  libremente, 
siempre y cuando se mencione al autor y se proporcione un enlace a su web.

Basado en un ejemplo de esta URL: 
http://arduino.cc/es/Tutorial/KnightRider
*/

int pinArray[] = {0, 1, 2, 3, 4, 5, 6, 7};
int count = 0;
int timer = 1000; //Para hacerlo con led poner a 100ms

void setup()
  {
  for (count=0;count<8;count++)      // declaramos todas las variables a la vez
    {
    pinMode(pinArray[count], OUTPUT);
    }
  }

void loop()
  {
  for (count=0;count<8;count++)  //Vamos subiendo las luces...
    {
    digitalWrite(pinArray[count], HIGH);
    delay(timer);
    digitalWrite(pinArray[count], LOW);
    delay(timer);
    }
    
  for (count=7;count>=0;count--) //Vamos descenciendo las luces...
    {
    digitalWrite(pinArray[count], HIGH);
    delay(timer);
    digitalWrite(pinArray[count], LOW);
    delay(timer);
    }
  }


Coche Fantástico

Hemos llamado este ejemplo en memoria de una serie de TV de los años 80 donde el famoso David Hasselhoff tenía una Inteligencia Artificial mecánica que conducía su Pontiac. El coche había sido aumentado con multitud de LEDs de todos los tamaños realizando efectos de luces.

Así que decidimos esto para aprender más acerca de la programación secuencial y buenas técnicas de programación para la placa E/S, sería interesante usar el Coche Fantástico como una metáfora.

Este ejemplo utiliza 6 LEDs conectados a los pins 2 - 7 en la placa usando resistencias de 220 Ohm. El primer código de ejemplo hará que los LED parpadeen en una secuencia, uno por uno usando sólo digitalWrite(pinNum,HIGH/LOW) y delay(time). El segundo ejemplo muestra como usar una construcción for(;;) para realizar lo mismo, pero en menos líneas. El tercer y último ejemplo se concentra en los efectos visuales de encender y apagar los LED de una manera más suave.

Ejemplo para los fans de Hasselhoff's


Código:
Coche Fantástico 1

 
/* Coche Fantástico 1
 * --------------
 *
 * Basicamente una extensión de Blink_LED.
 *
 *
 * (cleft) 2005 K3, Malmo University
 * @author: David Cuartielles
 * @hardware: David Cuartielles, Aaron Hallborg
 */

int pin2 = 2;
int pin3 = 3;
int pin4 = 4;
int pin5 = 5;
int pin6 = 6;
int pin7 = 7;
int timer = 100;

void setup(){
  pinMode(pin2, OUTPUT);
  pinMode(pin3, OUTPUT);
  pinMode(pin4, OUTPUT);
  pinMode(pin5, OUTPUT);
  pinMode(pin6, OUTPUT);
  pinMode(pin7, OUTPUT);
}

void loop() {
   digitalWrite(pin2, HIGH);
   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);
}

Coche Fantástico 2

 
/* Coche Fantástico 2
 * --------------
 *
 * Reduciendo la cantidad de código usando for(;;).
 *
 *
 * (cleft) 2005 K3, Malmo University
 * @author: David Cuartielles
 * @hardware: David Cuartielles, Aaron Hallborg
 */

int pinArray[] = {2, 3, 4, 5, 6, 7};
int count = 0;
int timer = 100;

void setup(){
  // declaramos todas las variables a la vez
  for (count=0;count<6;count++) {
    pinMode(pinArray[count], OUTPUT);
  }
}

void loop() {
  for (count=0;count<6;count++) {
   digitalWrite(pinArray[count], HIGH);
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(timer);
  }
  for (count=5;count>=0;count--) {
   digitalWrite(pinArray[count], HIGH);
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(timer);
  }
}

Coche Fantástico 3

 
/* Coche Fantástico 3
 * --------------
 *
 * Este ejemplo se concentra en conseguir efectos visuales fluidos.
 *
 *
 * (cleft) 2005 K3, Malmo University
 * @author: David Cuartielles
 * @hardware: David Cuartielles, Aaron Hallborg
 */

int pinArray[] = {2, 3, 4, 5, 6, 7};
int count = 0;
int timer = 30;

void setup(){
  for (count=0;count<6;count++) {
    pinMode(pinArray[count], OUTPUT);
  }
}

void loop() {
  for (count=0;count<5;count++) {
   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);
  }
}



Fuente: http://arduino.cc/es/Tutorial/KnightRider

No hay comentarios:

Publicar un comentario