martes, 24 de marzo de 2015

laboratorio#3

laboratorio#3
control de 8 LEDs con arduino , el control consiste en encender un LED que se mueva en forma continua de derecha a izquierda y de izquierda a derecha y por medio de una interfaz gráfica en processing con la cual se controlan los tiempos de encendido y apagado.


Materiales


  1. una placa arduino mega o arduino uno con cable de comunicacion + pc con ide arduino y el de processing+libreria controlIp5 
  2. 8 Leds + 8 resistencias de 1khom
  3. cables varios +protoboard

montaje en frritzing














esquemático en fritzing















montaje de componentes
se empieza montando los leds y resistencias











Así quedara el montaje











Codigo arduino

#define maxleds 8 //creamos la variable maxleds de 8 elementos

int t1=0; // creamos una variable t1 entera
int t2=0; // creamos una variable t2 entera
int valor=0; // creamos una variable valor entera

int led[maxleds] = {2,3,4,5,6,7,8,9}; //creamos un vector para los pines a utilizar

int i; //creamos una variable entera i
void setup ()
{
 Serial.begin(9600); // La comunicacion serial sera a 9600 baudios
 for (int i=0;i<maxleds;i++)
 pinMode(led[i],OUTPUT); // El pines del 2 al 9 seran de salida
}

void loop()
{
 for (int i=0;i<=maxleds;i++)
 {
 if (Serial.available()>0) // si hay datos en el puerto serial entra a la condicion
 {
 valor = Serial.read(); // lee el valor que hay en el puerto serial
 if (valor == 'O')
 t1 = Serial.parseInt(); // lee y toma el siguiente valor y lo convierte a entero
 if (valor == 'F')
 t2 = Serial.parseInt(); // lee y toma el siguiente valor y lo convierte a entero
 }
 prender(led[i],t1); //llama a la funcion prender ingresando los parametros
 apagar(led[i],t2); //llama a la funcion apagar ingresando los parametros
 }

 for (int i=maxleds;i>=0;i--)
 {
 if (Serial.available()>0)
 {
 valor = Serial.read();
 if (valor == 'O')
 t1 = Serial.parseInt();
 if (valor == 'F')
 t2 = Serial.parseInt();
 }
 prender(led[i],t1);
 apagar(led[i],t2);
 }
}

void prender(int i, int t) //funcion para enceder el led
{
 digitalWrite(i, HIGH);// led esta encendido
 delay(t); // tiempo encendido
}

void apagar(int i, int t)
{
 digitalWrite(i, LOW);// led esta apagado
 delay(t); // tiempo apagado
}

Codigo prossecing

 import controlP5.*; //importar libreria controlP5
import processing.serial.*; //importar libreria serial

ControlP5 cp5; // definir la variable cp5 del tipo ControlP5
Slider slider1; // definir la variable slider1 del tipo Slider
Slider slider2; // definir la variable slider2 del tipo Slider
Serial serial; // definir la variable serial del tipo Serial
Knob perilla1;
Textlabel texto1, texto2, texto3, texto4; // definir las variables texto del tipo Textlabel
Textlabel texto5, texto6, texto7;

// 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(750,330); // tamaño de la ventana
cp5 = new ControlP5(this); // crear el objeto ControlP5

// crear el Slider para el tiempo encendido (Vertical)
slider1 = cp5.addSlider("O",0,1000,500,80,120,30,100);
slider1.setColor(new CColor(0xFFFFFFFF,0xFF555555,0xFFBBBB20,0xFFFFFFFF,0xFFFFFFFF));
slider1.setLabelVisible(false);

// crear el Slider para el tiempo apagado (Horizontal)
slider2 = cp5.addSlider("F",0,1000,500,400,150,255,40);
slider2.setColor(new CColor(0xFFFFFFFF,0xFF555555,0xFFBBBB20,0xFFFFFFFF,0xFFFFFFFF));
slider2.setLabelVisible(false);
//crear una perilla
//perilla1 = cp5.addKnob("q",0,500,150,400,40,100);
//perilla1.setColor(new CColor (0xFF00FF00,0xFF555555,0xFF009F00,0xFFFFFFFF,0xFFFFFFFF));

// crear texto
texto1 = cp5.addTextlabel("label")
 .setText("LABORATORIO 3")
 .setPosition(250,20)
 .setColorValue(0xffffffFF)
 .setFont(createFont("Rod",30))
 ;

// crear texto
texto2 = cp5.addTextlabel("label1")
 .setText("TIEMPO ENCENDIDO (ms)")
 .setPosition(10,220)
 .setColorValue(0xffffffFF)
 .setFont(createFont("Comic Sans MS",15))
 ;

// crear texto
texto3 = cp5.addTextlabel("label2")
 .setText("TIEMPO APAGADO (ms)")
 .setPosition(460,120)
 .setColorValue(0xffffffFF)
 .setFont(createFont("Comic Sans MS",15))
 ;

// texto
texto4 = new Textlabel(cp5,"Laboratorio #3 ",490,230,600,200);
texto4.setFont(createFont("MV Boli",15));
texto5 = new Textlabel(cp5,"Bioingenieria ",490,250,600,200);
texto5.setFont(createFont("MV Boli",15));
texto6 = new Textlabel(cp5,"usaca",490,270,600,200);
texto6.setFont(createFont("MV Boli",15));
texto7 = new Textlabel(cp5,"Vianey holguin ",490,290,600,200);
texto7.setFont(createFont("MV Boli",15));
}

void draw()
{
background(58,0,255); // color de fondo de la ventana
 texto4.draw(this); // introduce el texto en la ventana
 texto5.draw(this);
 texto6.draw(this);
 texto7.draw(this);
}

void controlEvent (ControlEvent evento) // se activa el evento
{
String nombre = evento.getController().getName(); // recoje el nombre del slider y lo convierte en String
int valor = int(evento.getController().getValue()); // recoje el valor del slider y lo convierte en entero
serial.write(nombre + ":" + valor + "vianey"); // envia por el puerto serial el nombre y el valor
println(nombre + ":" + valor + "vianey"); // imprime por pantalla el nombre y el valor
}

video de funcionamiento


No hay comentarios.:

Publicar un comentario