lunes, 1 de marzo de 2010

Matriz de LEDs

El siguiente programa simula una matriz de LEDs controlada remotamente por un receptor infrarrojo. Cada LED que forma la matriz será controlado por un único botón del mando a distancia. Cada LED puede ser encendido o apagado independientemente del resto.

El circuito lo implementaremos de la siguiente manera:
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 del 2 al 11 formarán un vector de LEDs, simularán una matriz 2x5 en nuestra protoboard
Lado negativo de los LEDs a ground





//Cada LED numerado del 1 al 10 se encenderá y apagará cuando marquemos su número en el mando a distancia.
//Cada LED se enciende y apaga independientemente del resto con su propio botón del mando a distancia.

#include "WProgram.h"
#include "NECIRrcv.h"
#define IRPIN 12
unsigned long ircode;

const int pinesLED[]={2,3,4,5,6,7,8,9,10,11};
int i=0;
unsigned long a1=2;
unsigned long a2=2;
unsigned long a3=2;
unsigned long a4=2;
unsigned long a5=2;
unsigned long a6=2;
unsigned long a7=2;
unsigned long a8=2;
unsigned long a9=2;
unsigned long a10=2;

NECIRrcv ir(IRPIN);

void setup()
{
pinMode(IRPIN, INPUT);
for(i=0; i<10; i++)
{
pinMode(pinesLED[i], OUTPUT);
}
ir.begin();
}

void loop()
{
while (ir.available())
{
ircode=ir.read();
if(ircode==2707357440)
{
a1++;
}
if(ircode==2724069120)
{
a2++;
}
if(ircode==3776904960)
{
a3++;
}
if(ircode==3041591040)
{
a4++;
}
if(ircode==3058302720)
{
a5++;
}
if(ircode==4111138560)
{
a6++;
}
if(ircode==2774204160)
{
a7++;
}
if(ircode==2790915840)
{
a8++;
}
if(ircode==3843751680)
{
a9++;
}
if(ircode==2974744320)
{
a10++;
}
}

if((a1%2)==1)
{
digitalWrite(pinesLED[0], HIGH);
}
else
{
digitalWrite(pinesLED[0], LOW);
}
if((a2%2)==1)
{
digitalWrite(pinesLED[1], HIGH);
}
else
{
digitalWrite(pinesLED[1], LOW);
}
if((a3%2)==1)
{
digitalWrite(pinesLED[2], HIGH);
}
else
{
digitalWrite(pinesLED[2], LOW);
}
if((a4%2)==1)
{
digitalWrite(pinesLED[3], HIGH);
}
else
{
digitalWrite(pinesLED[3], LOW);
}
if((a5%2)==1)
{
digitalWrite(pinesLED[4], HIGH);
}
else
{
digitalWrite(pinesLED[4], LOW);
}
if((a6%2)==1)
{
digitalWrite(pinesLED[5], HIGH);
}
else
{
digitalWrite(pinesLED[5], LOW);
}
if((a7%2)==1)
{
digitalWrite(pinesLED[6], HIGH);
}
else
{
digitalWrite(pinesLED[6], LOW);
}
if((a8%2)==1)
{
digitalWrite(pinesLED[7], HIGH);
}
else
{
digitalWrite(pinesLED[7], LOW);
}
if((a9%2)==1)
{
digitalWrite(pinesLED[8], HIGH);
}
else
{
digitalWrite(pinesLED[8], LOW);
}
if((a10%2)==1)
{
digitalWrite(pinesLED[9], HIGH);
}
else
{
digitalWrite(pinesLED[9], LOW);
}
}

No hay comentarios:

Publicar un comentario