lunes, 26 de octubre de 2015

Laboratorio #7

Descripción:

En este laboratorio se controlara un LED RGB por medio de una interfaz gráfica en processing implementando ControlIP5, las intensidades de los tres colores se modificaran a través de tres silders que envían un valor entre 0 y 255 via serial hasta el arduino , donde se toman los valores y se envía cada uno por modulo PWM a cada pin del LED.

Materiales:


  • Computador con el software de arduino y processing
  • Arduino con su respectivo cable USB
  • Diodo LED RGB
  • Resistencias 220ohm
  • Cables

Diagramas:

Montaje






Esquemático




PCB



Código


Arduino

  1. // Laboratorio #7
  2. // Programa Arduino
  3. // Manejo de Led RGB a través de una interfaz grafica en
  4. // processing usando tres sliders
  5. // Johnson Camilo Barona Sanchez
  6. // Programacion de sistemas embebidos
  7. // Universidad Santiago de Cali
  8.  
  9. // inicio de codigo
  10.  
  11. // se inicializan las variables y nombres de los pines
  12. int Led_R = 6;     // salida pwm  para el led R
  13. int Led_G = 3;     // salida pwm  para el led G
  14. int Led_B = 5;     // salida pwm  para el led B
  15.  
  16. int Valor_R = 0;   // valor leido del serial para el led R
  17. int Valor_G = 0;   // valor leido del serial para el led G
  18. int Valor_B = 0;   // valor leido del serial para el led B
  19.  
  20. char Letra;        // lectura del caractér recibido
  21.  
  22. void setup()
  23. {
  24.   // La comunicacion serial sera a 9600 baudios
  25.   Serial.begin(9600);
  26.   // se configuran las salidas PWM usadas
  27.   pinMode(Led_R, OUTPUT);
  28.   pinMode(Led_G, OUTPUT);
  29.   pinMode(Led_B, OUTPUT);
  30. }
  31.  
  32. // Ciclo infinito de ejecucion
  33. void loop()
  34. {  
  35.   // Si hay datos disponibles en el puerto serial
  36.   if (Serial.available() > 0)
  37.   {  
  38.     // Leer la primera letra en el buffer
  39.     Letra = Serial.read();
  40.    
  41.     // aqui se condiciona si el valor enviado es para
  42.     // la intensidad del pin R, G o B del Led y se guarda el
  43.     // numero enviado luego de la respectiva letra
  44.     if (Letra == 'R'){
  45.       Valor_R = Serial.parseInt();
  46.     }
  47.     if (Letra == 'G'){
  48.       Valor_G = Serial.parseInt();
  49.     }
  50.     if (Letra == 'B'){
  51.       Valor_B = Serial.parseInt();
  52.     // el bucle se ejecuta mientras hayan datos disponibles
  53.     // por leer en el buffer.
  54.     }
  55.   }
  56.  
  57.   analogWrite(Led_R, Valor_R);
  58.   analogWrite(Led_G, Valor_G);
  59.   analogWrite(Led_B, Valor_B);
  60.      
  61. }


Processing

  1. // Laboratorio #7
  2. // Prograama Processing
  3. // Manejo de Led RGB a través de una interfaz grafica en
  4. // processing usando tres sliders
  5. // Programacion de sistemas embebidos
  6. // Johnson Camilo Barona Sanchez
  7. // Universidad Santiago de Cali
  8.  
  9. // inicio de codigo
  10.  
  11. // utilizar la libreria ControlP5
  12. import controlP5.*;
  13. import processing.serial.*;
  14.  
  15. // definir la variable cp5 del tipo ControlP5
  16. ControlP5 cp5;
  17. Serial serial;
  18.  
  19. // como deseamos controlar los colores RGB
  20. // necesitamos 3 variables
  21. int val_R = 128;  
  22. int val_G = 128;  
  23. int val_B = 128;  
  24.  
  25. // Solo se ejecuta una vez, al iniciar el Sketch
  26. void setup() {
  27.  
  28.   size(500, 180); // tamaño de la ventana
  29.   noStroke();     // no dibujar el border de los rectángulos
  30.  
  31.   // crear el objeto ControlP5
  32.   cp5 = new ControlP5(this);
  33.  
  34.   // crear el Slider para el color Rojo
  35.   Slider slideR =
  36.     cp5.addSlider("R", 0, 255, 128, 180, 15, 300, 40);
  37.   slideR.setColor( new CColor(
  38.   0xFFAA0000, 0xFF550000, 0xFFFF0000,
  39.   0xFFFFFFFF, 0xFFFFFFFF));
  40.  
  41.   // crear el Slider para el color Verde
  42.   Slider slideG =
  43.     cp5.addSlider("G", 0, 255, 128, 180, 70, 300, 40);
  44.   slideG.setColor( new CColor(
  45.   0xFF00AA00, 0xFF005500, 0xFF00FF00,
  46.   0xFFFFFFFF, 0xFFFFFFFF));
  47.  
  48.   // crear el Slider para el color Azul
  49.   Slider slideB =
  50.     cp5.addSlider("B", 0, 255, 128, 180, 125, 300, 40);
  51.   slideB.setColor( new CColor(
  52.   0xFF0000AA, 0xFF000055, 0xFF0000FF,
  53.   0xFFFFFFFF, 0xFFFFFFFF));
  54.  
  55.   // Creamos el objeto del puerto Serial
  56.   serial = new Serial(this, Serial.list()[0], 9600);
  57. }
  58.  
  59. // dibujar cada frame
  60. void draw()  
  61. {
  62.   background(0xFF444444);  // color gris del fondo
  63.   // definir el color de relleno combinando los valores
  64.   // de los colores de los 3 Sliders
  65.   fill(val_R, val_G, val_B);  
  66.   // dibujar el rectángulo con ese color
  67.   rect(15, 15, 150, 150);
  68. }  
  69.  
  70. // actuar cuando ocurra un evento con los Sliders
  71. public void controlEvent(ControlEvent evento) {
  72.   // guardar el nombre y valor del evento
  73.   String nombre = evento.getController().getName();
  74.   int valor = int(evento.getController().getValue());
  75.  
  76.   // guardar el valor en la variable para cada color
  77.   if (nombre == "R") {
  78.     val_R = valor;
  79.   }
  80.   if (nombre == "G") {
  81.     val_G = valor;
  82.   }
  83.   if (nombre == "B") {
  84.     val_B = valor;
  85.   }
  86.  
  87.   //Envíamos el valor al Arduino a través del Serial
  88.   serial.write("R"+ val_R + "G" + val_G + "B" + val_B );
  89.   //Imprimimos en la consola, para ver que todo va Ok
  90. println("R"+ val_R + "G" + val_G + "B" + val_B );
  91. }


Proceso de Montaje


en una protoboard procedemos a ensamblar nuestros componentes , ubicamos primero nuestro diodo LED RGB con sus respectivas resistencias.





luego de haber montado los componentes procedemos a puentear a los pines según mostrado los diagramas anteriormente expuestos. 




ya teniendo todo conectado correctamente procedemos a contectar el arduino al computador , enviamos el codigo arduino y processing, de esta manera damos funcionamiento a nuestro LED RGB.





Vídeo



 

No hay comentarios:

Publicar un comentario