Página principal
Arduino
Control salidas
JAVA
En un montaje anterior arseta.html había realizado un controlador
de salidas mediante una placa Arduino.
Estaba realizado en Gambas (VB Linux), en esta ocasión lo realizo en
JAVA.
Normalmente o trabajo en C, C++, y Basic.
El trabajo que he tenido que realizar para programarlo en JAVA a
sido increíble.
Intentar encontrar fuentes donde existan ejemplos sobre la
programación de los puertos serie en JAVA a sido muy difícil.
Cuando encontraba algo, estaba semicompletado o no funcionaba
realmente.
En una de mis múltiples búsquedas encontré:
http://josedeveloper.com/2012/01/28/comunicacion-serial-java-y-arduino/
Además de proporcionar los programas completos, enseñaba como
compilar los programas sin errores.
Circuito.
Programa JAVA funcionando.
En cuanto al programa realizado para el arduino,
los códigos se basan en anteriores montajes míos, son del tipo:
petición de dato a través del interface serie, y respuesta por
parte del arduino a través del mismo interface serie.
Por ejemplo:
SET 8,0
Apagar pin 8
SET 8,1
Encender pin 8
El que quiera puede mandar los comandos por el teminal y mandarlos
con SEND, harán el mismo efecto.
En la parte del Arduino, está preparado para que entienda desde los
pin 14 al 19, que corresponden a A0 - A5 , pero no están
implementados en la interface JAVA.
El cansancio de programar este programa en JAVA, me hizo que no
realizara la comprobación del estado real de las salidas, estaba
harto.
Para colmo, en teoría se puede empaquetar todo en un único fichero
*.jar, pero yo no lo he conseguido.
Para hacer mas fácil la compilación y ejecución del programa, he
realizado dos ficheros de comandos BASH ./copile y ./run
.
Lo que parece fácil de C o C++ , se hace muy complicado en JAVA,
como el manejo de ficheros o puertos serie.
Está realizado en el entorno de Debian 10 , por lo cual el arduino
debe encontrarse en /dev/ttyUSB0 , lo normal es que buscase
automáticamente donde está conectado el arduino, pero lo he
simplificado.
Si por casualidad estuviese en otro sitio, deberemos indicarlo en la
línea de comandos. ./run
/dev/ttyUSB1 .
Versión
2. 15/04/2020
Estuve pensando como reducir el código, y lo primero que se me vino
a la cabeza era hacer un arrays de JRadioButton.
Esto hacía bastante mas fácil el código.
También observe que daba un pequeño error cuando se iniciaba el
programa.
Esto se producía debido a que no se había cerrado antes el puerto
serie.
He añadido una función que cierra los puertos, pero también esto
genera un reset cuando se inicia el programa.
En algunos casos beneficia y en otros casos lo perjudica.
Dependiendo lo que se quiera se debe comentar esta función.
PROGRAMA V2
Espero que les sirva este programa para vuestros proyectos.
PROGRAMA-JAVA-ARDUINO
Saludos.
Juan Galaz
Bibliografía:
http://josedeveloper.com/2012/01/28/comunicacion-serial-java-y-arduino/