sábado, 13 de marzo de 2010

Juegos de luces

Tenemos diez LEDs, que forman seis juegos de luces diferentes. Cada juego está asociado a una tecla del mando a distancia. Luego controlaremos la intensidad de los pines PWM. Otras tres teclas del mando a distancia controlarán la intensidad del brillo de los LEDs PWM.

Colocando el receptor IR mirando hacia nosotros:
1º pin del IR al pin 12 (digital)
2º pin del IR a ground
3º pin del IR a +5V

Pines PWM a 6 LEDs
Pines 4, 7, 8, 12 a 4 LEDs
Lados negativos de los LEDS a ground



Código .pde


//En el siguiente programa tendremos 6 juegos de luces, asociados a 6 teclas del mando a distancia
//Podremos elegir la intensidad de las salidas PWM con otros 3 botones (+, - y Enter)

#include "WProgram.h"
#include "NECIRrcv.h"
#define IRPIN 8
unsigned long ircode;
NECIRrcv ir(IRPIN);
const int pinesPWM[]={5,6,9,10};
const int pinesDigitales[]={3,4,7,2,12,11};
int intensidad=1;
int i=0;

void setup()
{
pinMode(IRPIN, INPUT);
for(i=0; i<6; i++)
{
pinMode(pinesDigitales[i], OUTPUT);
if(i<=3)
{
pinMode(pinesPWM[i], OUTPUT);
}
}
ir.begin();
}

void loop ()
{
while (ir.available())
{
ircode=ir.read();
}

if(ircode==3977445120)
{
intensidad=10;
}
if(ircode==3944021760)
{
intensidad=60;
}
if(ircode==3994156800)
{
intensidad=255;
}
//Primer juego de luces
if(ircode==2707357440)
{
for(i=0; i<6; i++)
{
if(i%2==0)
{
analogWrite(pinesPWM[0], intensidad);
analogWrite(pinesPWM[1], intensidad);
analogWrite(pinesPWM[2], 0);
analogWrite(pinesPWM[3], 0);
}
else
{
analogWrite(pinesPWM[0], 0);
analogWrite(pinesPWM[1], 0);
analogWrite(pinesPWM[2], intensidad);
analogWrite(pinesPWM[3], intensidad);
}
digitalWrite(pinesDigitales[i], HIGH);
delay(480);
digitalWrite(pinesDigitales[i], LOW);
}
analogWrite(pinesPWM[0], 0);
analogWrite(pinesPWM[1], 0);
analogWrite(pinesPWM[2], 0);
analogWrite(pinesPWM[3], 0);
}
//Segundo juego de luces
if(ircode==2724069120)
{
for(i=0; i<6; i++)
{
if(i%2==0)
{
analogWrite(pinesPWM[0], intensidad);
analogWrite(pinesPWM[2], intensidad);
analogWrite(pinesPWM[1], 0);
analogWrite(pinesPWM[3], 0);
}
else
{
analogWrite(pinesPWM[0], 0);
analogWrite(pinesPWM[2], 0);
analogWrite(pinesPWM[1], intensidad);
analogWrite(pinesPWM[3], intensidad);
}
digitalWrite(pinesDigitales[i], HIGH);
delay(300);
}
for(i=5; i>=0; i--)
{
if(i%2==0)
{
analogWrite(pinesPWM[0], intensidad);
analogWrite(pinesPWM[2], intensidad);
analogWrite(pinesPWM[1], 0);
analogWrite(pinesPWM[3], 0);
}
else
{
analogWrite(pinesPWM[0], 0);
analogWrite(pinesPWM[2], 0);
analogWrite(pinesPWM[1], intensidad);
analogWrite(pinesPWM[3], intensidad);
}
digitalWrite(pinesDigitales[i], LOW);
delay(300);
}
analogWrite(pinesPWM[0], 0);
analogWrite(pinesPWM[2], 0);
analogWrite(pinesPWM[1], 0);
analogWrite(pinesPWM[3], 0);
}
//Tercer juego de luces
if(ircode==3776904960)
{
digitalWrite(pinesDigitales[2], HIGH);
digitalWrite(pinesDigitales[3], HIGH);
delay(280);
digitalWrite(pinesDigitales[1], HIGH);
digitalWrite(pinesDigitales[4], HIGH);
delay(280);
digitalWrite(pinesDigitales[0], HIGH);
digitalWrite(pinesDigitales[5], HIGH);
delay(280);
analogWrite(pinesPWM[1], intensidad);
analogWrite(pinesPWM[2], intensidad);
delay(280);
analogWrite(pinesPWM[0], intensidad);
analogWrite(pinesPWM[3], intensidad);
delay(280);
for(i=0; i<6; i++)
{
digitalWrite(pinesDigitales[i], LOW);
}
for(i=0; i<4; i++)
{
analogWrite(pinesPWM[i], 0);
}
delay(180);
}
//Cuarto juego de luces
if(ircode==3041591040)
{
digitalWrite(pinesDigitales[2], HIGH);
digitalWrite(pinesDigitales[3], LOW);
digitalWrite(pinesDigitales[1], LOW);
digitalWrite(pinesDigitales[4], HIGH);
digitalWrite(pinesDigitales[0], HIGH);
digitalWrite(pinesDigitales[5], LOW);
analogWrite(pinesPWM[0], intensidad);
analogWrite(pinesPWM[2], intensidad);
analogWrite(pinesPWM[1], 0);
analogWrite(pinesPWM[3], 0);
delay(220);
digitalWrite(pinesDigitales[2], LOW);
digitalWrite(pinesDigitales[3], HIGH);
digitalWrite(pinesDigitales[1], HIGH);
digitalWrite(pinesDigitales[4], LOW);
digitalWrite(pinesDigitales[0], LOW);
digitalWrite(pinesDigitales[5], HIGH);
analogWrite(pinesPWM[0], 0);
analogWrite(pinesPWM[2], 0);
analogWrite(pinesPWM[1], intensidad);
analogWrite(pinesPWM[3], intensidad);
delay(220);
for(i=0; i<6; i++)
{
digitalWrite(pinesDigitales[i], LOW);
}
for(i=0; i<4; i++)
{
analogWrite(pinesPWM[i], 0);
}
}
//Quinto juego de luces
if(ircode==3058302720)
{
digitalWrite(pinesDigitales[2], HIGH);
analogWrite(pinesPWM[3], intensidad);
delay(280);
digitalWrite(pinesDigitales[1], HIGH);
analogWrite(pinesPWM[2], intensidad);
delay(280);
digitalWrite(pinesDigitales[0], HIGH);
digitalWrite(pinesDigitales[5], HIGH);
delay(280);
analogWrite(pinesPWM[1], intensidad);
digitalWrite(pinesDigitales[4], HIGH);
delay(280);
analogWrite(pinesPWM[0], intensidad);
digitalWrite(pinesDigitales[3], HIGH);
delay(280);
for(i=0; i<6; i++)
{
digitalWrite(pinesDigitales[i], LOW);
}
for(i=0; i<4; i++)
{
analogWrite(pinesPWM[i], 0);
}
delay(180);
}
//Sexto juego de luces
if(ircode==4111138560)
{
digitalWrite(pinesDigitales[0], HIGH);
delay(180);
digitalWrite(pinesDigitales[1], HIGH);
analogWrite(pinesPWM[1], intensidad);
delay(180);
digitalWrite(pinesDigitales[2], HIGH);
analogWrite(pinesPWM[0], intensidad);
delay(180);
analogWrite(pinesPWM[3], intensidad);
digitalWrite(pinesDigitales[3], HIGH);
delay(180);
analogWrite(pinesPWM[2], intensidad);
digitalWrite(pinesDigitales[4], HIGH);
delay(180);
digitalWrite(pinesDigitales[5], HIGH);
delay(180);
digitalWrite(pinesDigitales[5], LOW);
delay(180);
analogWrite(pinesPWM[2], 0);
digitalWrite(pinesDigitales[4], LOW);
delay(180);
analogWrite(pinesPWM[3], 0);
digitalWrite(pinesDigitales[3], LOW);
delay(180);
digitalWrite(pinesDigitales[2], LOW);
analogWrite(pinesPWM[0], 0);
delay(180);
digitalWrite(pinesDigitales[1], LOW);
analogWrite(pinesPWM[1], 0);
delay(180);
digitalWrite(pinesDigitales[0], LOW);
delay(180);
}
}

No hay comentarios:

Publicar un comentario