sábado, 17 de mayo de 2014

LABORATORIO 6

LABORATORIO 6

DESCRIPCIÓN DEL LABORATORIO :


Controlaré a través de Arduino un LED RGB puesto en una protoboard, vía PWM con una interfaz gráfica en Processing/ControlP5 para controlar el valor de cada color.

MATERIALES UTILIZADOS

(1) Protoboard


(1) Led


Cable utp

(1) Arduino uno

(2) Resistencias
     




DIAGRAMA DEL MONTAJE EN LA PROTOBOARD


DIAGRAMA DEL MONTAJE EN EL CIRCUITO



FOTOS DEL MONTAJE













CÓDIGO ARDUINO
  1. // Pines usados para el RGB (9-10) todos
  2. // son salidas digitales PWM (~)
  3.  
  4. int Red = 9;
  5. int Gre = 10;
  6. int Blu = 11;
  7. int valor = 0;
  8.  
  9. // Ciclo para activar los tres pines como salida
  10. void setup() {
  11.   pinMode(9, OUTPUT);
  12.   pinMode(10, OUTPUT);
  13.   pinMode(11, OUTPUT);
  14.   //Comunicación serial a 9600bps
  15.   Serial.begin(9600);
  16. }
  17.  
  18.  
  19. // Recibe la información de manera serial del processing
  20. // diferenciando la información del color rojo por la letra "R"
  21. // la información del color verde por la letra "G" y
  22. // la información del color azul por la letra "B"
  23. void loop() {
  24.   if (Serial.available()>0) {
  25.     char Color = Serial.read();
  26.     if (Color == 'R'){
  27.       valor = Serial.parseInt();
  28.       analogWrite(Red,valor);
  29.     }
  30.     if (Color == 'G'){
  31.       valor = Serial.parseInt();
  32.       analogWrite(Gre,valor);
  33.     }
  34.     if (Color == 'B'){
  35.       valor = Serial.parseInt();
  36.       analogWrite(Blu,valor);
  37.     }  
  38.   }


CÓDIGO PROCESSING


  1. // Se utiliza las librerias ControlP5 y Serial del Processing
  2. import controlP5.*;
  3. import processing.serial.*;

  4. // Se define la variable cP5 del tipo ControlP5
  5. ControlP5 cP5;

  6. // Se le da nombres a los tres Knob y al Serial
  7. Knob PerRed;
  8. Knob PerGre;
  9. Knob PerBlu;
  10. Serial serial;

  11. // Se necesitan inicializar el valor de los colores RGB
  12. // en este caso lo hacemos en 128
  13. int Red = 128;
  14. int Gre = 128;
  15. int Blu = 128;

  16. // Configuración inicial
  17. void setup() {
  18.   size(700550);  //Tamaño de la ventana

  19.   cP5 = new ControlP5(this);  //Crea el objeto ControlP5

  20.   // Crea el Knob del color Rojo
  21.   PerRed = cP5.addKnob("R")
  22.     .setRange(0255)
  23.       .setValue(86)
  24.         .setPosition(100280)
  25.           .setRadius(100)
  26.             .setNumberOfTickMarks(20)
  27.               .setTickMarkLength(8)
  28.                 .setLabelVisible(false)
  29.                   .setColorForeground(color(255))
  30.                     .setColorBackground(color(0))
  31.                       .setColorActive(color(25500))
  32.                         .setDragDirection(Knob.HORIZONTAL)
  33.                           ;
  34.   // Crea el Knob del color Verde
  35.   PerGre = cP5.addKnob("G")
  36.     .setRange(0255)
  37.       .setValue(128)
  38.         .setPosition(250110)
  39.           .setRadius(100)
  40.             .setNumberOfTickMarks(20)
  41.               .setTickMarkLength(8)
  42.                 .setLabelVisible(false)
  43.                   .setColorForeground(color(255))
  44.                     .setColorBackground(color(0))
  45.                       .setColorActive(color(02550))
  46.                         .setDragDirection(Knob.HORIZONTAL)
  47.                           ;
  48.   // Crea el Knob del color Azul
  49.   PerBlu = cP5.addKnob("B")
  50.     .setRange(0255)
  51.       .setValue(170)
  52.         .setPosition(400280)
  53.           .setRadius(100)
  54.             .setNumberOfTickMarks(20)
  55.               .setTickMarkLength(8)
  56.                 .setLabelVisible(false)
  57.                   .setColorForeground(color(255))
  58.                     .setColorBackground(color(0))
  59.                       .setColorActive(color(00255))
  60.                         .setDragDirection(Knob.HORIZONTAL)
  61.                           ;

  62.   String puerto = Serial.list()[0];
  63.   serial = new Serial(this, puerto, 9600);
  64. }

  65. // Se dibuja cada frame
  66. void draw() {
  67.   background(0xFF444444);  //Color Gris del fondo

  68.   fill(Red, Gre, Blu);
  69.   rect(5090600415);
  70.   fill(0xFF444444);
  71.   rect(5595590405);
  72.   fill(Red, 00);
  73.   ellipse(200380220220);
  74.   fill(0, Gre, 0);
  75.   ellipse(350210220220);
  76.   fill(00, Blu);
  77.   ellipse(500380220220);
  78.   fill(Red, Gre, Blu);
  79.   textFont(createFont("Gill Sans Ultra Bold"65));
  80.   text("Led RGB"18070);
  81.   fill(Red, 00);
  82.   textSize(30);
  83.   text("Red"60490);
  84.   fill(0, Gre, 0);
  85.   textSize(30);
  86.   text("Green"445135);
  87.   fill(00, Blu);
  88.   textSize(30);
  89.   text("Blue"350490);
  90.   fill(255);
  91.   textSize(25);
  92.   text("Juan Camilo Fernández López"190540);
  93. }

  94. // Como se va a actuar cuando ocurra un evento con los Knobs
  95. void controlEvent(ControlEvent evento) {
  96.   String nombre = evento.getController().getName();
  97.   int valor = int(evento.getController().getValue());
  98.   serial.write(nombre + valor);

  99.   // Guarda el valor en la variable para cada color,
  100.   // cuando se usa cada Knob
  101.   if (nombre == "R") {
  102.     Red = valor;
  103.   }
  104.   if (nombre == "G") {
  105.     Gre = valor;
  106.   }
  107.   if (nombre == "B") {
  108.     Blu = valor;
  109.   }
  110. }


    VÍDEO DEL FUNCIONAMIENTO



    No hay comentarios.:

    Publicar un comentario