La siguiente entrada pretende ser una sencilla guía para construir un variador de frecuencia de multiplexado con Arduino y Java, donde se modifica a través de un software la frecuencia de encendido de una fila de LEDs conectados a Arduino.
Hace unos días escribí un post sobre el multiplexado de LEDs con Arduino. Para demostrar el concepto que quería explicar diseñé un sketch y una aplicación en Java para variar la frecuencia del multiplexado de una fila de LEDs. El siguiente video muestra el funcionamiento de esta demostración:
Ahora voy a proceder a explicar cómo se construyó este proyecto.
La parte Electrónica
Las conexiones del circuito son las siguientes:
El diagrama electrónico:
Es necesario tomar en cuenta cuál es el ánodo y cual es el cátodo del LED a la hora de hacer las conexiones.
Código en Arduino
Este es el código que se debe subir en el Arduino para que la demostración funcione:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
/* --------------------------------------- | Ejemplo de Multiplexado con Arduino | Diseñado por Antony García González, del Panama Hitek Creative Team --------------------------------------- Este es un ejemplo sobre el efecto que causa el aumento de la frecuencia de multiplexado de una fila de LEDs en el ojo humano. A partir de determinada frecuencia dejamos de percibir el parpadeo del LED y parece que los 5 LEDs están encendidos a la vez, cuando en realidad tenemos solo 1 LED encendido en un instante en específico, cambiando a una alta frecuencia. Este sketch funciona junto a una aplicación en Java, la cual se puede descargar desde el siguiente enlace: http://github.com/PanamaHitek/ArduinoMultiplexor Un video con este ejemplo funcionando está disponible en la siguiente dirección: http://www.youtube.com/watch?v=9youHjA_fWA */ //Variable que establece el delay entre un LED y otro int time = 200; void setup() { //Registro PORT DDRD = B11111100; Serial.begin(9600); } void loop() { if (Serial.available() > 0) { delay(1); String input = ""; while (Serial.available() > 0) { //Se lee el mensaje en el puerto serie int incomingChar = Serial.read(); //Se verifica si lo que se está recibiendo es o no un punto. Un punto es lo que separa un mensaje de otro //En ASCII el 46 representa un mpunto (.) if (incomingChar != 46) { input += (char)incomingChar; } else { time = input.toInt(); break; } } } //Secuencia de encendido de LEDs usando PORT PORTD = B10000000; delay(time); PORTD = B01000000; delay(time); PORTD = B00100000; delay(time); PORTD = B00010000; delay(time); PORTD = B00001000; delay(time); } |
Código en Java
Para trabajar en Java nos creamos un proyecto en Netbeans, al que yo he llamado ArduinoMultiplexor y he agregado un JFrame al que he llamado Window. En el método main de la clase ArduinoMultiplexor.java he instanciado el JFrame para que sea lo primero en ejecutarse.
Creamos una sencilla interfaz con un JSlider y algunos JLabel como se muestra en la siguiente imagen:
Dentro del código JFrame instanciamos la librería Arduino para Java y en el evento StateChanged del JSlider colocamos el código que se muestra en la siguiente imagen.
Todos los archivos relacionados a este proyecto se encuentran disponibles para su descarga en nuestro repositorio de GitHub, al cual se puede acceder desde el siguiente enlace:
Espero que la información suministrada sea de utilidad. Saludos.