Controlar 8 LEDs desde el Arduino, un LED encendido que se mueve en forma continua de izquierda a derecha, vía una interfaz gráfica en Processing/ControlP5 para controlar el tiempo de encendido y el tiempo de apagado.
Materiales
- Computador con el IDE de Arduino Y Processing
- Tarjeta Arduino
- Cable USB; COM5
- Protoboard
- 8 LEDs + Resistencias 220Ω
- Cables macho-macho
Diagrama del Montaje en la Protoboard.
Diagrama Esquemático del Circuito.
Diagrama PCB equivalente.
Proceso del Montaje paso a paso (Fotos).
Paso 1: Conectamos los leds y las resistencias
Paso 2: Se procede hacer las conexiones con los pines digitales del arduino, sin olvidar la tierra.
Código Fuente en Arduino (con comentarios).
/********** Proyecto **********
* Universidad Santiago de cali
* Angelica maria campo Mancilla
* Laboratorio 03: 8 LEDs en linea controlados por una Interface (Processing)
* Descripcion:
* Mover un LED encendido de Izquierda a Derecha y viceversa
* con tiempos controlados por una Interface (Processing)
* Conexiones:
* 8 LEDs + resistencias
/********** Librerias **********/
// ninguna
/********** Constantes **********/
#define TOTLED 8 // Total LEDs
/********** Objetos **********/
// ninguno
/********** Variables **********/
int led[TOTLED] = { 2, 3, 4, 5, 6, 7, 8, 9};
// Valores recibidos por el puerto serial
int t_encendido = 200;
int t_apagado = 200;
// Se guarda el valor que recibimos vía serial
int valor = 0;
/********** Configuracion **********/
void setup() {
// La comunicacion serial sera a 9600
Serial.begin(9600);
int pos = 0;
// El pos sera el pin de salida
while (pos < TOTLED) {
pinMode(led[pos], OUTPUT);
pos = pos + 1;
}
}
/********** Ciclo Principal **********/
// Ciclo infinito de ejecución //
void loop() {
for (int pos = 0; pos < TOTLED; pos++) {
leer();
on(led[pos], t_encendido);
off(led[pos], t_apagado);
}
for (int pos = TOTLED - 2; pos > 0; pos--) {
leer();
on(led[pos], t_encendido);
off(led[pos], t_apagado);
}
Serial.begin(9600);
}
/********** Funciones **********/
//Lee constantemente los valores de la interfaz
void leer() {
/*********Acciones******* /
// Si hay datos disponibles en el puerto serial, cambia la intensidad de iluminación del led
if (Serial.available() > 0) {
// Leer el valor, para ajustar el encendido del led
t_encendido = Serial.read();
// Leer el valor, para ajustar el apagado del led
t_apagado = Serial.read();
}}
/********** Funciones **********/
// Pone en +5V el pin indicado, durante tantos milisegundos
void on(int pin, int ms) {
digitalWrite(pin, HIGH);
//Hace una pausa en el programa para la cantidad de tiempo (en milisegundos)
delay(ms);
} // end on()
// Pone en GND el pin indicado, durante tantos milisegundos
void off(int pin, int ms) {
digitalWrite(pin, LOW);
} // end off()
/********** Fin ***********/
Código Fuente en Processing (con comentarios).
// Proyecto Laboratorio 03: 8 LEDs en linea controlados por (Processing)
// Universidad santiago de cali
// Angelica maria Campo Mancilla
// Importamos las librerías de ControlP5 y Serial
import controlP5.*;
import processing.serial.*;
// se crean las variables para ControlP5, el Slider y El puerto serial
ControlP5 cp5;
Slider slider;
Slider slider_encender;
Slider slider_apagar;
int valor_encender;
int valor_apagar;
Serial serial;
// Solo se ejecuta una vez, al iniciar el Sketch
void setup() {
// Tamaño de la Ventana
size(450, 220);
// Creamos el objeto de ControlP5
cp5 = new ControlP5(this);
// Creamos el objeto Slider, para el control del encendido
slider_apagar = cp5.addSlider("Encendido", 1, 200, 150, 70, 40, 300, 40);
// Creamos el objeto Slider, para el control del apagado
slider_encender = cp5.addSlider("Apagado", 1, 200, 150, 70, 120, 300, 40);
// Creamos el objeto del puerto Serial
serial = new Serial(this, Serial.list()[0], 9600);
}
// Se ejecuta N frames por segundo
void draw() {
// En este caso no debe dibujar nada
}
// Cuando ocurra un evento, aquí lo procesamos
void controlEvent(ControlEvent evento) {
// Obtenemos el nombre y el valor del evento
String nombre = evento.getController().getName();
if (nombre == "Encendido") {
valor_encender = int(evento.getController().getValue());
} else {
valor_apagar = int(evento.getController().getValue());
}
// Enviamos el valor al Arduino a través del Serial
serial.write(valor_encender);
serial.write(valor_apagar);
// Imprimimos en la consola, para ver que todo va Ok
println(nombre + ":" + valor_encender + " / " +nombre + ":" + valor_apagar);
}
/********** Fin ***********/
Video del Funcionamiento.




No hay comentarios.:
Publicar un comentario