En este laboratorio nos enfocamos en la comunicación serial entre una aplicación programada en Processing y en Arduino. controlaremos 8 LEDs, un LED encendido que se movera de izquierda a derecha, utilizando una interfaz gráfica en Processing/ControlIP5 para el control de, tiempo de encendido y apagado.
Manejaremos dos Silders horizontales para enviar un valor entre 0 y 255 con el fin de modificar el tiempo de encendido y apagado de los 8 LEDs conectados a los pines D3-D10.
Materiales:
- Arduino UNO
- 8 LEDs
- 8 Resistencias 470 ohm
- Computador con el respectivo programa de Arduino y Processing
- Protoboard
- Cables
Diagramas:
Montaje
Esquemático
Código
- //se define un nombre
- #define MAXLED 8
- // inicializar variables utilizadas
- int led[MAXLED] = {2,3,4,5,6,7,8,9}; //arreglo para los pines de salida digital
- int valor_ON = 0; // valor recibido del PC
- int valor_OFF = 0; // valor recibido del PC
- char letra; // lectura del caracter enviado
- void setup()
- {
- // La comunicacion serial sera a 9600 baudios
- Serial.begin(9600);
- // el bucle nombra los pines D2~D9 como salida digital
- for (int pin = 0; pin < MAXLED; pin++)
- pinMode(led[pin],OUTPUT);
- }
- // Ciclo infinito de ejecucion
- void loop()
- {
- // Si hay datos disponibles en el puerto serial
- if (Serial.available() > 0)
- {
- // Leer el valor
- letra = Serial.read();
- // aqui se condiciona si el valor enviado es para el
- // valor de apagado o encendido
- if (letra == 'A'){
- valor_ON = Serial.parseInt();
- }
- if (letra == 'B'){
- valor_OFF = Serial.parseInt();
- }
- }
- //rutina de desplazamiento de los leds
- //toma los valores de valor_ON y valor_OFF
- //para los retardos
- for (int pin = 0; pin < MAXLED; pin++)
- {
- int t_ON = valor_ON;
- int t_OFF = valor_OFF;
- prender(led[pin], t_ON);
- apagar(led[pin], t_OFF);
- }
- }
- //funcion de encendido led por led
- void prender(int p, int t)
- {
- digitalWrite(p, HIGH);
- delay(t);
- }
- //funcion de apagado led por led
- void apagar(int p, int t)
- {
- digitalWrite(p, LOW);
- delay(t);
- }
Código Processing
- // Importamos las librerías de ControlP5 y Serial
- import controlP5.*;
- import processing.serial.*;
- char M = 'A';
- // Creamos las variables para ControlP5, el Slider y el puerto Serial
- ControlP5 cp5;
- Slider slider1;
- Slider slider2;
- Serial serial;
- // Solo se ejecuta una vez, al iniciar el Sketch
- void setup() {
- // Tamaño de la Ventana
- size(400, 200);
- // Creamos el objeto de ControlP5
- cp5 = new ControlP5(this);
- // Creamos los objetos Slider
- slider1 = cp5.addSlider("A", 0, 255, 128, 40, 40, 300, 40);
- slider2 = cp5.addSlider("B", 0, 255, 128, 40, 100, 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();
- int valor = int(evento.getController().getValue());
- //Envíamos el valor al Arduino a través del Serial
- serial.write(nombre+valor);
- //Imprimimos en la consola, para ver que todo va Ok
- println(nombre + ":" + valor);
- }
Proceso de Montaje
Procedemos a introducir los diodos en la protoboard, de su parte negativa añadimos en serie a cada diodo una resistencia de protección a su vez estará conectada a la tierra.
Luego procedemos a conectar con cables macho-macho cada diodo al puerto del arduino. Así como la alimentación negativa y positiva del circuito.
Video
No hay comentarios:
Publicar un comentario