miércoles, 23 de septiembre de 2015

Laboratorio # 3

Descripción:

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 


  1. //se define un nombre
  2. #define MAXLED 8      
  3.  
  4. // inicializar variables utilizadas
  5. int led[MAXLED] = {2,3,4,5,6,7,8,9};  //arreglo para los pines de salida digital
  6. int valor_ON = 0;                     // valor recibido del PC
  7. int valor_OFF = 0;                    // valor recibido del PC
  8. char letra;                           // lectura del caracter enviado
  9.  
  10. void setup()
  11. {
  12.   // La comunicacion serial sera a 9600 baudios
  13.   Serial.begin(9600);
  14.   // el bucle nombra los pines D2~D9 como salida digital
  15.   for (int pin = 0; pin < MAXLED; pin++)
  16.     pinMode(led[pin],OUTPUT);
  17.  
  18. }
  19.  
  20. // Ciclo infinito de ejecucion
  21. void loop()
  22. {  
  23.   // Si hay datos disponibles en el puerto serial
  24.   if (Serial.available() > 0)
  25.   {  
  26.     // Leer el valor
  27.     letra = Serial.read();
  28.    
  29.     // aqui se condiciona si el valor enviado es para el
  30.     // valor de apagado o encendido
  31.     if (letra == 'A'){
  32.       valor_ON = Serial.parseInt();
  33.     }
  34.     if (letra == 'B'){
  35.       valor_OFF = Serial.parseInt();
  36.     }
  37.   }
  38.  
  39.   //rutina de desplazamiento de los leds
  40.   //toma los valores de valor_ON y valor_OFF
  41.   //para los retardos
  42.   for (int pin = 0; pin < MAXLED; pin++)
  43.   {
  44.     int t_ON = valor_ON;
  45.     int t_OFF = valor_OFF;
  46.     prender(led[pin], t_ON);
  47.     apagar(led[pin], t_OFF);
  48.   }
  49. }
  50.  
  51. //funcion de encendido led por led
  52. void prender(int p, int t)
  53. {
  54.   digitalWrite(p, HIGH);
  55.   delay(t);
  56. }
  57.  
  58. //funcion de apagado led por led
  59. void apagar(int p, int t)
  60. {
  61.   digitalWrite(p, LOW);
  62.   delay(t);
  63. }

Código Processing

  1. // Importamos las librerías de ControlP5 y Serial
  2. import controlP5.*;
  3. import processing.serial.*;
  4.  
  5. char M = 'A';
  6.  
  7. // Creamos las variables para ControlP5, el Slider y el puerto Serial
  8. ControlP5 cp5;
  9. Slider slider1;
  10. Slider slider2;
  11. Serial serial;
  12.  
  13. // Solo se ejecuta una vez, al iniciar el Sketch
  14. void setup() {
  15.   // Tamaño de la Ventana
  16.   size(400, 200);
  17.   // Creamos el objeto de ControlP5
  18.   cp5 = new ControlP5(this);
  19.   // Creamos los objetos Slider  
  20.   slider1 = cp5.addSlider("A", 0, 255, 128, 40, 40, 300, 40);
  21.   slider2 = cp5.addSlider("B", 0, 255, 128, 40, 100, 300, 40);
  22.   // Creamos el objeto del puerto Serial
  23.   serial = new Serial(this, Serial.list()[0], 9600);
  24. }
  25.  
  26. // Se ejecuta N frames por segundo
  27. void draw() {
  28.   // En este caso no debe dibujar nada
  29. }
  30.  
  31. // Cuando ocurra un evento, aquí lo procesamos
  32. void controlEvent(ControlEvent evento) {
  33.   // Obtenemos el nombre y el valor del evento
  34.   String nombre = evento.getController().getName();
  35.   int valor = int(evento.getController().getValue());
  36.   //Envíamos el valor al Arduino a través del Serial
  37.   serial.write(nombre+valor);
  38.   //Imprimimos en la consola, para ver que todo va Ok
  39. println(nombre + ":" + valor);
  40.  
  41. }





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