***Este post fue originalmente publicado el 31 de enero de 2013, pero lo estoy re posteando ya que esta vez utilizaré la librería Arduino para Java que yo mismo diseñé y que no fue incluida en la publicación original
En este artículo voy a mostrar como encender un LED desde un programa en la PC hecho con el lenguaje de programación Java, utilizando Netbeans IDE.
Uno de los principios de la Robótica es lograr que un dispositivo electrónico sea controlado por el usuario a través de una computadora. Con Arduino podemos controlar circuitos utilizando aplicaciones escritas en cualquier lenguaje de programación que soporte comunicación serial. Para efectos de este post, concentraremos nuestros esfuerzos en lograr que un circuito sencillo, como lo es un LED y una resistencia puedan ser conmutados desde nuestra computadora, utilizando una interfaz en Java y nuestro microcontrolador Arduino. En mis anteriores aportes me he enfocado en explicar como crear una sencilla aplicación en Java, con un botón y un jLabel. También vimos como trabajan las funciones en Java. Para poder enviar y recibir información a través del puerto serie con Java se necesita instalar las librerías RXTX. Por último, toda aplicación debe contar con la Librería Arduino para Java. Con toda esta información somos capaces de lograr nuestro acometido. Empezemos. Primero abrimos Netbeans y creamos un proyecto llamado ArduinoSwitch. Insertamos un jFrame y colocamos 2 botones: Encender y Apagar.
Necesitamos renombrar los nombres de los botones. Los llamaremos jButtonEncender y jButtonApagar. Ahora al botón de Apagar le vamos a quitar la opción «enabled» en las propiedades del control. Esto lo que hará es que al iniciar el programa no se pueda presionar el botón de apagado mientras el LED esté apagado. Si ejecutamos el programa, la interfaz es la siguiente: Ahora vamos a programar. Lo primero que debemos hacer es agregar las librerías RXTX y Arduino a nuestro programa. Abrimos el código fuente e instanciamos la librería Arduino. Le damos clic al ícono amarillo de la izquierda y seleccionamos la primera opción. Esto logrará que se elimine el error. En el método principal se inicializa la conexión con Arduino. Como solo vamos a encender y apagar, se usa ArduinoTX. Los parámetros que colocaremos son los siguientes: PORT NAME: Nombre del puerto donde está conectado Arduino (por ejemplo, COM24, COM25, COM 25, etc). TIME OUT: Tiempo de espera entre el inicio de la ejecución y el envío de comandos. Se utiliza 2000 por default. DATARATE: El baud rate de la comunicación serial. Normalmente se usa 9600. Agregamos los parámetros que estemos usando en nuestro proyecto y metemos todo en una estructura Try-Catch. Con esto hemos terminado la conexión con Arduino. Necesitamos programar los botones. Lo que haremos será que cuando presionamos el botón de encender, este se desactive y solo quede activo el botón de apagar. Le damos doble clic al botón «Encender» en la interfaz de diseño e insertamos la programación. Al presionar encender, se desactivará el botón y cambiará el color a gris. Se activara el botón apagar y cambiará a dorado. Usaremos la clase Color para los colores, los cuales necesitamos introducir en formato RGB. Así luce la programación: El comando que va a encender el LED en Arduino será un «1» el cual enviaremos utilizando la función Arduino.SendData().
En el botón apagar se copia el mismo código pero se le hacen algunas ligeras modificaciones. Hemos terminado la programación en Java. Ahora solo hay que subir el código a nuestro Arduino para que todo nos funcione bien. Primero el esquemático:
Nótese que el cátodo (positivo) del LED está en el pin 13 y el cátodo en GND (verificar los electrodos dentro del propio LED). Ahora la programación:
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 |
int input; 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 esto estamos listos para ejecutar. En el siguiente video (el que publiqué en la versión original, viejo y sin mucha calidad) se muestra la pequeña interfaz que hemos hecho funcionando con un LED. Los archivos de este proyecto se encuentran disponibles en el siguiente enlace: http://docs.google.com/file/d/0B0hsUkhqWH97a1BDUU02MlB4WXM Espero que toda la información suministrada sea de su completo agrado. Saludos.
Bastante interesante, todo lo que se puede hacer con Arduino infinitas aplicaciones.
Una pequeña consulta en donde colocaste el LED me parecio ver un protoboard, la duda es porque me interesaria hacerlo en mi casa de manera Hobbie, desde el desarrollo en Java y del protoboard.
Gracias.
En el pin 13 se puede colocar un LED de forma directa y funcionará. Si se va a usar otro pin que no sea el 13 se recomienda proteger el LED con una resistencia de al menos 220 ohms, por lo que es necesario un protoboard
Hola amigo un saludo muy especial desde Colombia allá en panamá, primero que todo quisiera felicitarte por el excelente blog que tienes, he estado revisando tu blog y hay muy buenos tutoriales, esto quisiera pedirte un favor he revisado este tutorial lo e implementado en java funciona perfecto, esto quisiera saber es como dejarlo ejecutable, me explico un archivo en el cual yo no tenga que abrir java cada vez que quiera ejecutarlo, cual quier información estaré agradecido amigo, ya que en Internet hay cierta información que a veces lo confunde a uno, y pues quisiera que me ayudara en eso por que estoy interesado en realizar proyectos tales como estos para Arduino. Muchas gracias.
Actualmente me encuentro investigando sobre este tema ya que es un problema muy común que se tiene entre los usuarios de Java. Me encuentro haciéndole consultas a un profesor de mi Universidad que es miembro de Netbeans Dream Team. Apenas tenga una solución a este tema le aseguro que publicaré un tutorial completo acerca de dichas técnicas. Y está de suerte por que necesito presentar un proyecto de fin de semestre dentro de dos semanas y el mismo requiere del uso de un programa que contenga la librería en su interior. Espérelo pronto
Hola que tal, gracias por el tutorial… amm tengo una pregunta , es posible adaptar esta libreria en Android? manejandolo con alguna evento o algo asi?
Quizá, pero por ahora no tengo experiencia en Android por lo que no podría adaptarla
Hola buenas tardes, disculpa descargue los archivos pero el programa en java agrego las librerias pero me sigue marcando un Warning y a la hora de correrlo truena, espero me puedas ayudar ya que ocupo basarme de este programa para crear otro, saludos…
Que tipo de error te aparece?
Un cordial saludo, se que soy nuevo en java pero quiero que me ayudes con este proyecto que hiciste no llegó a entender como hiciste que puedas conectar tu pc con el protoboard quisiera saber eso te lo agradecería de ante mano. Gracias
Quisero saber como hiciste el circuito y como conectaste la pc con el circuito que tiene el LED.
Se utiliza un Arduino, que es un micro controlador conectado a la PC por medio de un cable USB
Debes utilizar un Arduino para poder lograrlo
esta muy padre tu blog. bien explicado el mejor que he vistoo =D
Pero no me funciono a mi jijijiji es ke estoy utilizando ENERGIA y pues no se tal
vez sea eso. Pero esta muy padre Felicidades.
Que tal, intente descargar los archivos pero al abrirlos solo me permite visualizar la ventana sin el codigo ni nada.
Saludos
Intenta buscar en el menu File o Archivo, la opción de descargar
Hola una duda que tal si tengo n leds que tendria que aumentar?
Replicar los pinMode, y los digitalWrite y los numeros que encienden cada uno
Hola Antony Esta muy chebere los tutos pero y los planos esquematicos??
Para este tuto no se necesita plano esquemático. Se trata solo de conectar un LED entre el pin 13 y GND
Hola buen día, para este ejemplo existe alguna versión especial del JDK de Java? Yo lo he probado con la 7 y hasta la 1.4 y no me sale. El error es en Netbeans.
El JDK es 1.8
Necesitas usar la versión 1.8
Estoy trabajando en la versión 2.8.0 en la cual esto ya no sería un problema
Es correcto
No existe mayor diferencia entre un Arduino y otro en cuanto a software
diculpa amigo, el me baje el programa y le agregue la libreria PanamaHitek_Arduino, v2.8.3 pero sigue marcando error. ¿me podrias ayudar?. tengo arduino uno y trabajo en netbeans 8.1, el jdk que estoy utilizando es el 1.8. saludos desde mexico
Qué error?
perdon por no responder antes. me dice que la libreria no existe
import Arduino.Arduino;
Tienes que verificar la documentación de la librería
Hola disculpa como solucionaste tu error? ayuda por favor
Borra el import y haslo de nuevo
Sí funciona