martes, 24 de marzo de 2015

laboratorio 5

laboratorio5

el laboratorio 5 se pretende controlar un LED RGB con una placa arduino mega o arduino 1 via pwm
con una interfaz grafica desde processing.

materiales


  1. una placa arduino mega o arduino 1 + cable de comunicación + pc con ide arduino +ide de processing /controlIp5.
  2. cables varios + 3 resistencias de 1kohm.
  3. un led RGB 

diagrama en protoboard con fritzing














esquema en fritzing













montaje del circuito













configuracion del led






interfaz grafica en processing












codigo 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 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
 }
}

codigo processing

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 5")
 .setPosition(150,30)
 .setColorValue(0xff000000)
 .setFont(createFont("Algerian",40))
 ;

texto2 = cp5.addTextlabel("label1")
 .setText("ROJO")
 .setPosition(105,250)
 .setColorValue(0xff000000)
 .setFont(createFont("Algerian",15))
 ;

texto3 = cp5.addTextlabel("label2")
 .setText("VERDE")
 .setPosition(290,250)
 .setColorValue(0xff000000)
 .setFont(createFont("Algerian",15))
 ;

texto4 = cp5.addTextlabel("label3")
 .setText("AZUL")
 .setPosition(486,250)
 .setColorValue(0xff000000)
 .setFont(createFont("Algerian",15))
 ;

// otra forma de crear texto
texto4 = new Textlabel(cp5,"Viavey Holguin",40,290,600,200);
texto4.setFont(createFont("Andalus",17));
texto4.setColorValue(0xff000000);
texto5 = new Textlabel(cp5,"Bioingenieria",40,305,600,200);
texto5.setFont(createFont("Andalus",17));
texto5.setColorValue(0xff000000);
texto6 = new Textlabel(cp5,"USCACA.VIANEY",40,320,600,200);
texto6.setFont(createFont("Andalus",17));
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
}



video del laboratorio


No hay comentarios.:

Publicar un comentario