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



 

Laboratorio #6

Descripción:

el objetivo del siguiente laboratorio es controlar un LED RGB desde el arduino , via PWM con tres potenciometros, uno para cada color.

Materiales:


  • Computador con el debido software de arduino
  • Arduino con su respectivo cable USB
  • Protoboard
  • Diodo LED RGB
  • Resistencias 220ohm
  • 3 potenciometros de 10k
  • Cables



Diagramas:

Montaje




Esquemático



PCB



Código

  1. // Laboratorio #6
  2. // Programa Arduino
  3. // Johnson Camilo Barona Sanchez
  4. // Universidad Santiago de Cali
  5. // Programación de sistemas embebidos
  6.  
  7. // se inicializan las variables y nombres de los pines
  8. int Pot_R = A0;    // entrada analoga Led R
  9. int Pot_G = A1;    // entrada analoga Led G
  10. int Pot_B = A2;    // entrada analoga Led B
  11.  
  12. int Led_R = 6;     // salida pwm  para el led R
  13. int Led_G = 5;     // salida pwm  para el led G
  14. int Led_B = 3;     // salida pwm  para el led B
  15.  
  16. int Valor_R = 0;   // valor guardado de la entrada analoga R
  17. int Valor_G = 0;   // valor guardado de la entrada analoga G
  18. int Valor_B = 0;   // valor guardado de la entrada analoga B
  19.  
  20. // se configuran entradas y salidas usadas
  21. void setup(){
  22.   pinMode(Led_R, OUTPUT);
  23.   pinMode(Led_G, OUTPUT);
  24.   pinMode(Led_B, OUTPUT);
  25.   pinMode(Pot_R, INPUT);
  26.   pinMode(Pot_G, INPUT);
  27.   pinMode(Pot_B, INPUT);
  28.  
  29. }
  30.  
  31. // blucle infinito donde se ejecuta el programa
  32. void loop() {
  33.   // se leen las entradas A0, A1, A2 para leer el valor del
  34.   // potenciometro
  35.   int Valor_R = analogRead(Pot_R);
  36.   int Valor_G = analogRead(Pot_G);
  37.   int Valor_B = analogRead(Pot_B);
  38.  
  39.   // se hace redimension del dato, ya que la lectura de
  40.   // las entradas analogas entrega un valor entre 0 y 1023
  41.   // pero necesitamos valores de 0 a 255, hacemos esto divi-
  42.   // diendo por 4.
  43.   Valor_R = Valor_R/4;
  44.   Valor_G = Valor_G/4;
  45.   Valor_B = Valor_B/4;
  46.  
  47.   // se envian los valores corregidos a cada pin PWM
  48.   analogWrite(Led_R, Valor_R);
  49.   analogWrite(Led_G, Valor_G);
  50.   analogWrite(Led_B, Valor_B);
  51.  
  52. }


Proceso de montaje


en una protoboard procedemos a montar los componentes electrónicos. lo primero que haremos sera ubicar los 3 potenciometros, el LED RGB  y sus respectivas resistencias.




Cuando tenemos montados nuestros componentes en la protoboard, procedemos a puentear a la tierra, los pines análogos ,  los digitales y al pin de 5v. En los diagramas anteriores se explica mejor dicha conexión.





concluimos con el funcionamiento de nuestro circuito según el movimiento de cada potenciometro: