Recibir datos de arduino en java

Recibir datos de arduino en java

Arduino java

Tengo un Arduino que envía datos al programa Java a través de la comunicación serie. Al encender y descansar el Arduino envía datos invisibles al puerto serie que necesitan ser purgados/borrados, etc. He probado la purga en serie desde el arduino y desde el programa Java y ninguno de los dos parece funcionar.
A continuación está mi código Java que cuando se pulsa un botón envía el código al Arduino que enciende o apaga el LED y el Arduino envía de vuelta un reconocimiento de un OFF o ON. Sin embargo, no estoy recibiendo esto. O bien llegan la mitad de los caracteres o ninguno.

Cómo leer y escribir datos desde el puerto serie en java

Arduino es impresionante, pero es bastante inútil como un dispositivo de adquisición de datos (DAQ) si sólo podemos leer los datos en el IDE de Arduino. Recuerdo que en el primer año, trabajé en una placa inalámbrica para mi proyecto de Introducción a la Ingeniería. Por aquel entonces, sin saber nada realmente de programación, decidí que sería genial hacer un mando de juegos inalámbrico como el de la Wii. Así que me puse manos a la obra, utilizando el programa de muestra del fabricante para obtener los datos que necesitaba, escribirlos en un archivo de texto, importarlos en un juego que escribí con Game Maker… omg, los errores, los lags. El TA intentó ayudar pero fue inútil, lol. Luego lo hice de nuevo con el proyecto Space Hopper, si sólo sé cómo leer los datos del Joystick en Java…
En fin, hoy he codificado un poco y esto es lo que he conseguido después de trastear un par de horas. La mayor parte del tiempo la pasé intentando que Arduino enviara los datos correctamente. C++ no es lo mío. Probablemente escriba una clase Java para que sea aún más fácil de usar.
Así que el hardware-sabio, sólo conectar el Arduino a su ordenador a través de un USB. Asegúrate de no ejecutar el código Java y el Monitor Serial Arduino al mismo tiempo. Sólo puedes tener un programa que use el puerto a la vez.

Jserialcomm arduino ejemplo

Ya está solucionado. He puesto un Thread.sleep(4000); después de abrir el puerto en el código java y ahora funciona. El problema era que el arduino se reiniciaba cada vez que se abría el puerto. Cuando estaba enviando los datos, el arduino no estaba preparado para escuchar.
Ya está solucionado. Puse un Thread.sleep(4000) después de abrir el puerto en el código java y ahora funciona. El problema era que el Arduino se reinicia cada vez que se abre el puerto, por lo que estaba enviando los datos cuando el Arduino no estaba listo para escuchar.
Podría utilizar la biblioteca de comunicación Java-Arduino. Se puede encontrar aquí: https://sourceforge.net/projects/javaarduinolibrary/. (asegúrate de descargar ambos jars) Entonces tu código sería algo así:

Java enviar datos a arduino

El problema es que cuando quiero escribir un paquete char a través de la misma conexión HC05 a arduino, a veces funciona. De hecho, cada vez que hago clic en el botón disparando el método de escritura, veo el paquete recibido correctamente, pero cuando hago clic en el botón de nuevo o lo hago rápidamente, a veces sale basura en el lado de arduino.
Tengo retraso en mi bucle principal en el lado de arduino y lo estoy usando para controlar la frecuencia de muestreo de los sensores. He cronometrado el tiempo de cálculo del lado del arduino (excepto el retardo, por supuesto) y tarda unos 52 milisegundos.

Entradas relacionadas

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad