jueves, 5 de mayo de 2016

Laboratorio 7

Laboratorio 7
Descripción del Laboratorio
El objetivo del siguiente laboratorio es el de controlar un LED RGB desde el Arduino, vía PWM con una interfaz gráfica en Processing/ControlP5, para controlar el valor de cada color del led.
Lista de los Elementos utilizados
Computador con el IDE de Arduino y Processing
Tarjeta Arduino
Cable USB; COM5
Protoboard
Cables macho-macho
Led RGB
4 resistencias 220 Ω
Diagrama del Montaje en la Protoboard

Diagrama Esquemático del Circuito

Diagrama PCB equivalente

Proceso del Montaje paso a paso (Fotos)

Código Fuente en Arduino (con comentarios)
  1. #define MAXLED 3 //creamos la variable maxled 3 elementos
  2. int led[MAXLED] = {3,5,6}; //creamos un vector para los pines a utilizar
  3. int valor = 0; //creamos la variable valor de tipo entero
  4. int i = 0; //creamos la variable valor 1 de tipo entero
  5. void setup()
  6. {
  7.  Serial.begin(9600); // la comunicacion serial sera a 9600 baudios
  8.  for(int i = 0; i < MAXLED ; i++)
  9.  {
  10.  pinMode(led[i], OUTPUT); // los pines del 3,5,6 seran de salida
  11.  }
  12. }
  13. void loop()
  14. {
  15.  if(Serial.available() > 1) // si hay datos en el puerto serial entra a la condicion
  16.  {
  17.  valor = Serial.read(); // lee lo que hay en el puerto serial
  18.  if(valor == 'R')
  19.  i = 0;
  20.  if(valor == 'G')
  21.  i = 1;
  22.  if(valor == 'B')
  23.  i = 2;
  24.  valor = Serial.parseInt(); // lee y toma el siguiente valor convirtiandolo en entero
  25.  analogWrite(led[i], valor); // escribe el valor por el pin xx
  26.  }
  27. }
Código Fuente en Processing (con comentarios)
  1. //********** Proyecto **********
    //Lab 7: Controlar un LED RGB desde el Arduino, vía PWM con una interfaz
    // gráfica en Processing/ControlP5 para controlar el valor de cada color
    // Autor: Angelica maria campo Mancilla
    import controlP5.*; // importar libreria controlP5
    import processing.serial.*; // importar libreria serial
    ControlP5 cp5; // definir la variable cp5 del tipo ControlP5
    Knob rojo, verde, azul; // definir la variable rojo,verde y azul del tipo Knob
    Textlabel texto1, texto2, texto3, texto4, texto5, texto6; // definir las variables texto del tipo Textlabel
    Serial serial; // definir la variable serial del tipo Serial
    // configuración inicial
    void setup()
    {
    serial = new Serial(this, Serial.list()[0],9600); // inicializamos el puerto serial a 9600 baudios
    String puerto = Serial.list()[0]; //definimos la variable puerto de tipo cadena
    size(620,400); // tamaño de la ventana
    cp5 = new ControlP5(this); // crear el objeto ControlP5
    // crear el knob para la intensidad de color rojo
    rojo = cp5.addKnob("R",0,255,0,70,120,120);
    rojo.setColor(new CColor(0xFFFFFFFF,0xFFFF0000,0xFF000000,0xFFFFFFFF,0xFFFFFFFF));
    // crear el knob para la intensidad de color verde
    verde = cp5.addKnob("G",0,255,0,260,120,120);
    verde.setColor(new CColor(0xFFFFFFFF,0xFF00FF00,0xFF005F00,0xFFFFFFFF,0xFFFFFFFF));
    // crear el knob para la intensidad de color azul
    azul = cp5.addKnob("B",0,255,0,450,120,120);
    azul.setColor(new CColor(0xFFFFFFFF,0xFF0000FF,0xFF00005f,0xFFFFFFFF,0xFFFFFFFF));
    // crear texto
    texto1 = cp5.addTextlabel("label")
     .setText("Laboratorio 7")
     .setPosition(150,30)
     .setColorValue(0xff000000)
     .setFont(createFont("Tw cen MT",40))
     ;
    texto2 = cp5.addTextlabel("label1")
     .setText("Rojo")
     .setPosition(105,250)
     .setColorValue(0xff000000)
     .setFont(createFont("Comic sans Ms",22))
     ;
    texto3 = cp5.addTextlabel("label2")
     .setText("Verde")
     .setPosition(290,250)
     .setColorValue(0xff000000)
     .setFont(createFont("Comic sans Ms",22))
     ;
    texto4 = cp5.addTextlabel("label3")
     .setText("Azul")
     .setPosition(486,250)
     .setColorValue(0xff000000)
     .setFont(createFont("Comic sans Ms",22))
     ;
    // otra forma de crear texto
    texto4 = new Textlabel(cp5,"Angelica Campo  ",40,290,600,200);
    texto4.setFont(createFont("Tw cen MT",20));
    texto4.setColorValue(0xff000000);
    texto5 = new Textlabel(cp5,"Bioingenieria",40,305,600,200);
    texto5.setFont(createFont("Tw cen MT",20));
    texto5.setColorValue(0xff000000);
    texto6 = new Textlabel(cp5,"USC-2016A",40,320,600,200);
    texto6.setFont(createFont("Tw cen MT",20));
    texto6.setColorValue(0xff000000);
    }
    void draw()
    {
    background(255,255,255); // color de fondo de la ventana
     texto4.draw(this); // introduce el texto en la ventana
     texto5.draw(this);
     texto6.draw(this);
    }
    void controlEvent (ControlEvent evento) // se activa cuando ocurra un evento con los botones
    {
    String nombre = evento.getController().getName(); // recoje el nombre del slider y lo convierte en cadena
    int valor = int(evento.getController().getValue()); // recoje el valor del slider y lo convierte en entero
    serial.write(nombre + ":" + valor); // envia por el puerto serial el nombre y el valor
    println(nombre + ":" + valor); // imprime por pantalla el nombre y el valor
    }
Vídeo del Funcionamiento

No hay comentarios.:

Publicar un comentario