Un post sobre el uso de los hilos en Java (Java Threads) para emular el clásico ejemplo blink en Arduino. Se utiliza la librería RXTX como medio de comunicación entre Arduino y Java.
En mi post anterior publiqué como hacer el ejemplo blink de Arduino con Java Threads.
El resultado que obtuvimos es el siguiente:
[youtube https://www.youtube.com/watch?v=MKG4PqficmA]
Ahora utilizaremos este mismo ejemplo para poder variar la frecuencia del LED a nuestro antojo desde una interfaz en Java utilizando Java Threads.
Abrimos el mismo proyecto que ya creamos en Netbeans.
Nos vamos al panel de la derecha, la «Paleta» y buscamos un control que se llama Slider y la agregamos a nuestro frame.
También agregue un Label donde escribí que la frecuencia es 50 Hz. Esto se debe a que el Slider correrá en un rango de 1 Hz hasta 100 Hz.
El slider lo he llamado jSliderFrecuencia; el Label lo he llamado jLabelFrecuencia.
Ahora vamos a las propiedades del jSlider y establecemos que el valor mínimo es 1 y el valor máximo es 100.
Ahora procederemos a programar el comportamiendo del Slider.
Primero declaramos una variable del tipo entero llamada frecuencia. La variable debe ser de tipo global.
Ahora nos valdremos de un evento del mismo tipo de los que ya hemos usado antes. Le damos clic derecho en jSlider y buscamos eventos/Change/changeState.
Le damos clic y se nos abrirá la ventana de código. Este evento se ejecutará cada vez que halla un cambio en el state del Slider. El código es el siguiente:
1 2 |
Frecuencia=1000/jSliderFrecuencia.getValue(); jLabelFrecuencia.setText("Frecuencia: "+jSliderFrecuencia.getValue()+" Hz"); |
La frecuencia será igual a 1000(milisegundos) entre el valor que tenga el slider. Recordemos que la frecuencia es la cantidad de ciclos que se producen en un segundo. Si tenemos que queremos una frecuencia de 1 Hz, dividimos 1000/1 y obtenemos 1000 milisegundos que será la duración del delay.
Luego de asignarle el valor a la frecuencia, imprimimos el valor de la misma en el jLabel.
Ahora nos dirigimos al método Run donde se ejecutan los threads y cambiaremos el delay del comando Thread.sleep(). Actualmente tenemos el valor de 1000, que teníamos el ejemplo anterior. Reemplazamos el 1000 por la variable Frecuencia.
Con esto estamos listos para ejecutar nuestro programa.
El código para Arduino será el mismo:
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 |
void setup(){ pinMode(13, OUTPUT); // Declaramos que utilizaremos el pin 13 como salida Serial.begin(9600); } void loop(){ if (Serial.available()>0){ input=Serial.read(); if (input==’1′){ digitalWrite(13, HIGH); //Si el valor de input es 1, se enciende el led } else { digitalWrite(13, LOW); //Si el valor de input es diferente de 1, se apaga el LED } } } |
Con esté código en la placa, ejecutamos Netbeans y vemos el resultado.
[youtube https://www.youtube.com/watch?v=RoA6PV0Uz1w]
Si desean más información por favor contáctenme.
Espero sus comentarios.
Saludos.
Hola buen dia, estoy teniendo problemas al importar algunos comando, ya que no se logra apreciar bien el comando que va, podrias subir el code source.