DESCRIPCIÓN
En este laboratorio desde el arduino en donde se controlara un LED RGB, lo cual se debe manejar la intensidad de luz de cada uno de los colores ("Rojo";"Verde";"Azul"), del led para obtener diferentes combinaciones de colores, para poder combinarlos utilizaremos el software Processing, es decir, manipularemos la cantidad de luz para cada color para el rojo,verde y azul; esta variable de entrada debemos acomodarla dentro de un rango de (0 a 255), debido a que el led funciona con valores PWM y este es el rango total de esta modulación, por esta razón los pines RGB del led deben ir conectados a salidas PWM del arduino.
En este laboratorio desde el arduino en donde se controlara un LED RGB, lo cual se debe manejar la intensidad de luz de cada uno de los colores ("Rojo";"Verde";"Azul"), del led para obtener diferentes combinaciones de colores, para poder combinarlos utilizaremos el software Processing, es decir, manipularemos la cantidad de luz para cada color para el rojo,verde y azul; esta variable de entrada debemos acomodarla dentro de un rango de (0 a 255), debido a que el led funciona con valores PWM y este es el rango total de esta modulación, por esta razón los pines RGB del led deben ir conectados a salidas PWM del arduino.
MATERIALES DEL LABORATORIO
Protoboard.
Resistencias de 220 Ohmios.
Led RGB.
Kit de cables para arduino.
Resistencias de 220 Ohmios.
Led RGB.
Kit de cables para arduino.
MATERIALES DEL LABORATORIO
DIAGRAMAS
PROTOBOARD
CÓDIGO
ARDUINO
- #define MAXLED 3 //creamos la variable maxled 3 elementos
- int led[MAXLED] = {3,5,6}; //creamos un vector para los pines a utilizar
- int valor = 0; //creamos la variable valor 1 de tipo entero
- int i = 0; //creamos la variable valor 1 de tipo entero
- void setup()
- {
- Serial.begin(9600); // la comunicacion serial sera a 9600 baudios
- for(int i = 0; i < MAXLED ; i++)
- {
- pinMode(led[i], OUTPUT); // los pines del 3,5,6 seran de salida
- }
- }
- void loop()
- {
- if(Serial.available() > 0) // si hay datos en el puerto serial entra a la condicion
- {
- valor = Serial.read(); // lee lo que hay en el puerto serial
- if(valor == 'R')
- i = 0;
- if(valor == 'G')
- i = 1;
- if(valor == 'B')
- i = 2;
- valor = Serial.parseInt(); // lee y toma el siguiente valor convirtiandolo en entero
- analogWrite(led[i], valor); // escribe el valor por el pin xx
- }
- }
PROCESSING
- import controlP5.*; // utilizar la libreria controlp5
- import processing.serial.*; // utilizar la liberia processing.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; // 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(600,380); // 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,100);
- rojo.setColor(new CColor(0xFFAA0000, 0xFF550000, 0xFFFF0000,0xFFFFFFFF, 0xFFFFFFFF));
- // crear el knob para la intensidad de color verde
- verde = cp5.addKnob("G",0,255,0,260,120,100);
- verde.setColor(new CColor(0xFF00AA00, 0xFF005500,0xFF00FF00, 0xFFFFFFFF, 0xFFFFFFFF));
- // crear el knob para la intensidad de color azul
- azul = cp5.addKnob("B",0,255,0,450,120,100);
- azul.setColor(new CColor(0xFF0000AA, 0xFF000055, 0xFF0000FF,0xFFFFFFFF, 0xFFFFFFFF));
- // crear texto
- texto1 = cp5.addTextlabel("label")
- .setText("CONTROLES DEL LED RGB")
- .setPosition(20,30)
- .setColorValue(0xffffffFF)
- .setFont(createFont("Comic Sans MS",40))
- ;
- texto2 = cp5.addTextlabel("label1")
- .setText("Rojo")
- .setPosition(95,235)
- .setColorValue(0xffffffFF)
- .setFont(createFont("Comic Sans MS",15))
- ;
- texto3 = cp5.addTextlabel("label2")
- .setText("Verde")
- .setPosition(280,235)
- .setColorValue(0xffffffFF)
- .setFont(createFont("Comic Sans MS",15))
- ;
- texto4 = cp5.addTextlabel("label3")
- .setText("Azul")
- .setPosition(475,235)
- .setColorValue(0xffffffFF)
- .setFont(createFont("Comic Sans MS",15))
- ;
- // otra forma de crear texto
- texto4 = new Textlabel(cp5,"",40,280,600,200);
- texto4.setFont(createFont("MV Boli",15));
- }
- void draw()
- {
- background(10,10,10); // color de fondo de la ventana
- texto4.draw(this); // introduce el texto en la ventana
- }
- 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
- }