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)
- #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 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() > 1) // 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
- }
- }
- //********** 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 Mancillaimport controlP5.*; // importar libreria controlP5import processing.serial.*; // importar libreria serialControlP5 cp5; // definir la variable cp5 del tipo ControlP5Knob rojo, verde, azul; // definir la variable rojo,verde y azul del tipo KnobTextlabel texto1, texto2, texto3, texto4, texto5, texto6; // definir las variables texto del tipo TextlabelSerial serial; // definir la variable serial del tipo Serial// configuración inicialvoid setup(){serial = new Serial(this, Serial.list()[0],9600); // inicializamos el puerto serial a 9600 baudiosString puerto = Serial.list()[0]; //definimos la variable puerto de tipo cadenasize(620,400); // tamaño de la ventanacp5 = new ControlP5(this); // crear el objeto ControlP5// crear el knob para la intensidad de color rojorojo = 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 verdeverde = 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 azulazul = cp5.addKnob("B",0,255,0,450,120,120);azul.setColor(new CColor(0xFFFFFFFF,0xFF0000FF,0xFF00005f,0xFFFFFFFF,0xFFFFFFFF));// crear textotexto1 = 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 textotexto4 = 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 ventanatexto4.draw(this); // introduce el texto en la ventanatexto5.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 cadenaint valor = int(evento.getController().getValue()); // recoje el valor del slider y lo convierte en enteroserial.write(nombre + ":" + valor); // envia por el puerto serial el nombre y el valorprintln(nombre + ":" + valor); // imprime por pantalla el nombre y el valor}




No hay comentarios.:
Publicar un comentario