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
- una placa arduino mega o arduino uno con cable de comunicacion + pc con ide arduino y el de processing+libreria controlIp5
- 8 Leds + 8 resistencias de 1khom
- 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