DESCRIPCIÓN
Se encenderán 8 LEDs desde el arduino, mover los leds encendido de izquierda a derecha. Para el laboratorio 3, es necesario hacer una interfaz gráfica con Processing y ControlP5, y que esta interfaz envíe datos señalando los tiempos de encendido y apagado por el puerto serial hacia el Arduino.
A continuación pueden ver el código de ejemplo de la interfaz, y la comunicación serial para cambiar la intensidad de un LED vía PWM.
A continuación pueden ver el código de ejemplo de la interfaz, y la comunicación serial para cambiar la intensidad de un LED vía PWM.
MATERIALES DEL LABORATORIO
- Computador (con el IDE de Arduino, y el driver adecuado instalados)
- Tarjeta Arduino (cualquier modelo, debe corresponder al driver instalado)
- Cable USB (según el conector de la tarjeta Arduino)
- Protoboard
- 8 LEDs + Resistencias 220Ω
- Cables macho-macho
DIAGRAMAS
PROTOBOARD
CÓDIGO
Arduino
Processing
Arduino
- /********** Constantes **********/
- #define POT1 A0
- #define POT2 A1
- #define TOTLED 8 // Total LEDs
- /********** Objetos **********/
- // ninguno
- /********** Variables **********/
- int led[TOTLED] = {
- 2, 3, 4, 5, 6, 7, 8, 9};
- /********** Configuracion **********/
- void setup() {
- int pos=0;
- while (pos < TOTLED){
- pinMode(led[pos], OUTPUT);
- pos=pos+1;
- }
- pinMode(POT1, INPUT);
- pinMode(POT2, INPUT);
- } // end setup()
- /********** Ciclo Principal **********/
- void loop() {
- // Sensores
- int t_encendido = analogRead(POT1);
- int t_apagado = analogRead(POT2);
- // Acciones
- for (int pos = 0; pos < TOTLED; pos++) {
- int t_encendido = analogRead(POT1);
- int t_apagado = analogRead(POT2);
- on(led[pos], t_encendido);
- off(led[pos], t_apagado);
- }
- for (int pos = TOTLED-2; pos > 0; pos--) {
- int t_encendido = analogRead(POT1);
- int t_apagado = analogRead(POT2);
- on(led[pos], t_encendido);
- off(led[pos], t_apagado);
- }
- } // end loop()
- /********** Funciones **********/
- // Pone en +5V el pin indicado, durante tantos milisegundos
- void on(int pin, int ms){
- digitalWrite(pin, HIGH);
- delay(ms);
- } // end on()
- // Pone en GND el pin indicado, durante tantos milisegundos
- void off(int pin, int ms){
- digitalWrite(pin, LOW);
- delay(ms);
- } // end off()
Processing
- // Importamos las librerías de ControlP5 y Serial
- import controlP5.*;
- import processing.serial.*;
- // 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(600, 400);
- // Creamos el objeto de ControlP5
- cp5 = new ControlP5(this);
- // Creamos el objeto Slider
- slider1 = cp5.addSlider("P", 0, 255, 128, 40, 40, 300, 40);
- slider2 = cp5.addSlider("A", 0, 255, 128, 40, 90, 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);
- }