viernes, 29 de enero de 2010

Control de LEDs con un botón

Vamos a utilizar un botón para encender y apagar LEDs según deseemos. Tendremos 5 posibles opciones que se irán repitiendo cada vez que pulsemos el botón. La primera los dos LEDs simples y el tricolor apagados.
La segunda, un LED simple encendido. La tercera, el otro LED simple encendido. La cuarta, encenderemos únicamente el LED tricolor y la quinta y última opción tendremos los tres LEDs encendidos.


El circuito físico lo implementaremos de la siguiente manera:
+ 1º pin LED tricolor al pin 11 (digital)
- 2º pin LED tricolor al pin a ground
+ 3º pin LED tricolor al pin 10 (digital)
+ 4º pin LED tricolor al pin 9 (digital)

+ LED1 al pin 1 (digital)
- LED1 a ground
+ LED2 al pin 2 (digital)
- LED2 a ground

+ 5V al lado positivo del botón
+ Lado positivo del botón al pin 3 (digital)
- Lado negativo del botón a ground






//Controla los LED's en funcion del pulsador

int rojo=11;
int verde=10;
int azul=9;
const int LED1=1;
const int LED2=2;
int pulsador=3;
int contadorPulsador=0;
int last_time=0;
int estado=0;
int aux=1;

void setup()
{
pinMode(rojo, OUTPUT);
pinMode(verde, OUTPUT);
pinMode(azul, OUTPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(pulsador, INPUT);
}

void loop()
{
estado=digitalRead(pulsador);
if(estado!=last_time)
{
if(estado==HIGH)
{
contadorPulsador++;
aux+=1;
}
last_time=estado;
}

if(contadorPulsador%5==2)
{
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
analogWrite(rojo,0);
analogWrite(verde,0);
analogWrite(azul,0);
}
if(contadorPulsador%5==3)
{
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
analogWrite(rojo,0);
analogWrite(verde,0);
analogWrite(azul,0);
}
if(contadorPulsador%5==4)
{
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
if(aux%4==0)
{
analogWrite(rojo,0);
analogWrite(verde,255);
analogWrite(azul,0);
}
if(aux%4==1)
{
analogWrite(rojo,0);
analogWrite(verde,255);
analogWrite(azul,0);
}
if(aux%4==2)
{
analogWrite(rojo,255);
analogWrite(verde,255);
analogWrite(azul,0);
}
if(aux%4==3)
{
analogWrite(rojo,128);
analogWrite(verde,0);
analogWrite(azul,128);
}
}
if(contadorPulsador%5==0)
{
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
if(aux%4==0)
{
analogWrite(rojo,0);
analogWrite(verde,255);
analogWrite(azul,0);
}
if(aux%4==1)
{
analogWrite(rojo,0);
analogWrite(verde,255);
analogWrite(azul,0);
}
if(aux%4==2)
{
analogWrite(rojo,255);
analogWrite(verde,255);
analogWrite(azul,0);
}
if(aux%4==3)
{
analogWrite(rojo,128);
analogWrite(verde,0);
analogWrite(azul,128);
}
}
if(contadorPulsador%5==1)
{
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
analogWrite(rojo,0);
analogWrite(verde,0);
analogWrite(azul,0);
}
aux++;
}

No hay comentarios:

Publicar un comentario