En este laboratorio se controla un LED RGB desde la placa de arduino,via PWM con tres potenciometro uno para cada color (ROJO,AZUL,VERDE).
Materiales
- placa arduino uno o arduino mega2560 +cable de comunicación +pc con el ide de arduino
- 3 potenciometros de 10kohm + 3 resistencias de 1kohm
- un led RGB
- cables varios + protoboard
montaje en protoboard fritzing
esquemático en fritzing
montaje de los componentes
esquema de conexion del led
codigo arduino
#define PIN 3 //creamos la variable PIN de 3 elementos
#define Pot A0 //creamos la variable pot con el pin A0
const int Latch = 2; // Este pin sets baja cuando quiero que el 595 se escuche
const int Clock = 3; // Este pin es utilizado por shiftout para alternar
const int Data = 4; // Este pin se utiliza para pasar al siguiente bit
int led[PIN] = {2,3,4}; //creamos un vector para los pines a utilizar
int Serie1[17]={ 0,1,3,7,15,31,63,127,255,127,63,31,15,7,3,1,0 };
int Serie2[7]= { 129,66,36,24,36,66,129 };
int Serie3[11]={ 7,14,28,56,112,224,112,56,28,14,7 };
int Serie4[6]= { 24,129,36,24,129,21 };
int Serie5[8]= { 129,130,132,136,144,160,192,128 };
int Serie6[7]= { 24,20,18,17,18,20,24 };
int Serie7[4]= { 192,48,12,3 };
int Serie8[8]= { 80,10,255,255,0,255,10,80 };
// Solo se ejecuta una vez, al iniciar o resetear el Arduino
void setup() {
for (int i=0; i<PIN; i++){
pinMode(led[i], OUTPUT);
}
pinMode(Pot, INPUT);
}
// se ejecuta siempre como un ciclo
void loop()
{
int Pos = analogRead(Pot); // lee el valor del potenciometro
Pos = map(Pos, 0, 1023, 0,7); // hace un mapeo o conversion
Casos(Pos); // llama a la funcion casos
}
void Casos(int Valor) //funcion para enceder el led
{
switch(Valor)
{
case 0: //hacer algo cuando sea igual a 0
for(int j=0;j<17;j++)
{
On(Serie1[j]);
}
break;
case 1: //hacer algo cuando sea igual a 1
for(int j=0;j<7;j++)
{
On(Serie2[j]);
}
break;
case 2: //hacer algo cuando sea igual a 2
for(int j=0;j<11;j++)
{
On(Serie3[j]);
}
break;
case 3: //hacer algo cuando sea igual a 3
for(int j=0;j<6;j++)
{
On(Serie4[j]);
}
break;
case 4: //hacer algo cuando sea igual a 4
for(int j=0;j<8;j++)
{
On(Serie5[j]);
}
break;
case 5: //hacer algo cuando sea igual a 5
for(int j=0;j<7;j++)
{
On(Serie6[j]);
}
break;
case 6: //hacer algo cuando sea igual a 6
for(int j=0;j<4;j++)
{
On(Serie7[j]);
}
break;
case 7: //hacer algo cuando sea igual a 7
for(int j=0;j<8;j++)
{
On(Serie8[j]);
}
break;
}
}
// Uso de la orden interna shiftout función
void On(int Valor)
{
digitalWrite(Latch, LOW); // señal al 595 para escuchar los datos
shiftOut(Data, Clock, MSBFIRST, Valor); // Señal de la 595 que esta hecho
digitalWrite(Latch, HIGH); // enviar datos serial
delay(100); //Pausa el programa por un tiempo determinado (en milisegundos) especificado por el parámetro. Hay 1000 milisegundos en un segundo
}
video
No hay comentarios.:
Publicar un comentario