Arduino + Java: Enviando mensajes a pantalla LCD desde Java con Arduino

23
7627

En este post explicaré como podemos enviar una cadena de caracteres desde una interfaz Java a una pantala LCD utilizando Arduino.

En mi anterior post vimos como utilizar una pantalla LCD con Arduino.

Lo primero que explicaré será como crear la interfaz en Java. Nos vamos a Netbeans IDE y creamos un proyecto llamado LCDprinter.

Yo coloqué un jFrame con los siguientes controles:

Netbeans IDE

A mis controles le coloqué los siguientes nombres:

Netbeans IDE

Como programador soy un poco Old School y tiendo a dejar los nombres de los controles con el prefijo que los identifica (jButton, jFrame, JLabel, jTextField, etc…) y luego escribo el nombre que le quiero dar.

El código es bastante sencillo. Aparte de la función ArduinoConection() y EnviarDatos() solo se utilizará una función a la que he llamado letras().

 

 

Netbeans IDE

Ahora vamos a definir cuando llamaremos a esta función. Queremos que a medida que vamos escribiendo en el jTextField se vaya actualizando la cantidad de caracteres disponibles.

Utilizaremos un evento llamado KeyReleased.

Java permite utilizar eventos con sus componentes, los cuales estaremos viendo de manera más detallada en futuras aportaciones.

El evento KeyReleased se ejecuta cada vez que una tecla pasa de estar presionada a cuando el usuario deja de presionarla. Al escribir presionamos las teclas de nuestra computadora, por lo que este evento se ejecutará cada vez que introduzcamos un caracter.

Para establecer las acciones que se ejecutarán en el evento KeyReleased, vamos a el jTextFieldMensaje, le damos clic derecho, vamos a eventos/events, Key, KeyReleased.

Netbeans IDE

Se nos abrirá la ventana de código y entre las líneas que nos aparecen escribimos letras().

Netbeans IDE

Ahora programaremos los botones.

El botón «Enviar Texto» tendrá el siguiente código.

EnviarDatos(jTextFieldMensaje.getText());
jTextFieldMensaje.setText(«»);
letras();

Con esto le enviamos a Arduino el contenido del TextField.

El botón «Limpiar Texto» tendrá el siguiente código:

jTextFieldMensaje.setText(«»);
letras();

En ambos casos se limpia el contenido del jTextFieldMensaje y se actualiza la cantidad de caracteres.

Un último toque que le agregaremos: la posibilidad que al presionar ENTER el mensaje se envíe.

Le damos clic derecho al TextField y buscamos el evento Action/ActionPerformed.

Este permite que cuando alguien teclea ENTER mientras está escribiendo en un TextField, se ejecute determinado comando.

Ahi colocamos:

EnviarDatos(jTextFieldMensaje.getText());
jTextFieldMensaje.setText(«»);

Cuando hagamos esto el código nos debe quedar de la siguiente forma:

Netbeans IDE

No olviden colocar ArduinConnection() y EnviarDatos(), junto con las variables que hacen posible la comunicación Arduino-Java.

Netbeans IDE

 

Con esto debe ser suficiente para que podamos hacer lo que queremos hacer. Ahora vamos a Arduino IDE.

Cuando Java envía letras a Arduino a través del puerto Serie, Arduino las recibe en código ASCII, por lo que necesitamos transformar cada variable. Usaremos una función que yo mismo he preparado para este propósito. Se llama Decimal_to_ASCII().

Solamente se utiliza un switch, que ya lo vimos en el post Java+Arduino: Enciendiendo un LED RGB desde un programa en nuestra PC.

Reemplazamos los números por caracteres y devolvemos un char que será el que vamos a imprimir en la pantalla LCD.

 

 

Estamos listos con la programación. Para probar esto utilizaré el Arduino Nano que previamente adapté a la placa perforada y a la pantalla LCD.

2013-02-08-219 2013-02-08-220

Ahora estamos listos para probar si lo que hemos hecho funciona o no.

Si tienen alguna preguntas, sugerencias o comentarios no duden en contactarme.

Los archivos de este proyecto están disponibles en Google Drive.

http://docs.google.com/folder/d/0B0hsUkhqWH97elQtOU42aTlHTGc/edit?usp=sharing

0 0 votes
Article Rating
Suscríbete
Notify of
guest

23 Comments
newest
oldest most voted
Inline Feedbacks
View all comments
Luis
Luis
4 years ago

Intenté correr el programa y lamentablemente no funcionó, use la librería panamahitek 2.8.2. En serio necesito ayuda sobre el tema. Tengo un proyecto que necesita imprimir en pantalla LCD contraseñas realizadas en java.

David
David
5 years ago

Que tal, me aparece un error al correr el JFrame, dice algo asi de que:
error: package gnu.io does not exist
Si seria tan amable de ayudarme.
Gracias

Luis
Luis
4 years ago
Reply to  David

A mi igual. Lo solucionaste?

Juan Carlos PANTY SIHUAYRO
Juan Carlos PANTY SIHUAYRO
5 years ago

hola , diculapa puedes subir una imagen de la conexion del arduimo con el lcd 🙂

Juan Carlos PANTY SIHUAYRO
Juan Carlos PANTY SIHUAYRO
5 years ago

hola que tal, una pregunta tambien se puede usar un protoboard ?

Ariel
Ariel
5 years ago

Hola como seria, si yo quisiera usar un wemos d1 mini.Gracias amigo muy bueno tu ejemplo.

Isaac Ramirez Huston
Isaac Ramirez Huston
6 years ago

mi pregunta seria……como hacer esto mismo pero con una pantalla LCD Tft a color de 1.8Pulgadas, donde se muestre en vez de texto imágenes????? :/ todo se manda a leer con algún SetData? o como seria en este caso? ayuda

Fernando Basantes
Fernando Basantes
7 years ago

Disculpen me pueden ayudar. Lo que pasa es que hice todo exactamente igual pero al momento de enviar los digitos en el lcd no se muestra nada. Que puede ser? Me pueden ayudar con el diagrama utilizado aqui? Ya probe con el que esta en el anterior post. Por favor es de urgencia. Muchas gracias

Antony García González
Antony García González
7 years ago

Búscalo entre nuestros contenidos

Alex Robledo
Alex Robledo
7 years ago

no inventen eso se hae con conversion directa entre variables…

Antony García González
Antony García González
7 years ago
Reply to  Alex Robledo

A qué te refieres

Jorge Regino de Hoyos
Jorge Regino de Hoyos
7 years ago

Como haría eso mismo con tu nueva librería PanamaHitek_Arduino?? no he podido hacerlo

Arafael Cont
Arafael Cont
7 years ago

hola
quería saber si es posible que ayudes tengo problemas al momento de mandar el mensaje
gracias y que buen proyecto

systweak coupon code
10 years ago

Pretty! This has been a really wonderful article.
Thanks for providing this info.

antonygarciagonzalez
10 years ago

Thank you

Betty Crocker shopping discount

Hi, its good article about media print, we all be aware of media is a wonderful source of
data.

antonygarciagonzalez
10 years ago

Thank you

Jerri
10 years ago

It is perfect time to make some plans for the future
and it is time to be happy. I have read this publish and if I may
just I want to counsel you few fascinating issues or advice.

Perhaps you can write subsequent articles relating to this article.
I desire to read even more things approximately
it!