martes, 24 de marzo de 2015

Laboratorio#4

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

  1. placa arduino uno o arduino mega2560 +cable de comunicación +pc con el ide de arduino
  2. 3 potenciometros de 10kohm + 3 resistencias de 1kohm
  3. un led RGB
  4. cables varios + protoboard 
montaje en protoboard fritzing














esquemático en fritzing














montaje de los componentes 
se procede a montar los componentes en la protoboard segun esquematico













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