Comenzamos con el primer Tutorial del blog, para los que nos gusta mezclar el Software y hardware, y queremos hacerlo desde Arduino y java. aquí están estos pequeños pasos para hacerlo.
****Damos por hecho que ya tiene instalado Netbeans y Arduino*********
Paso 1.- Preparar arduino .
colocamos un led en arduino de la siguiente manera.
Se encuentra en el pin 13.
Abrimos el ejecutable de arduino nos vamos a File>Examples>Blink
nos abrirá uno de los ejemplo que hacer parpadear un led en el pin 13 cada segundo.
el Código es el Siguiente
Lo tendremos que modificar de la siguiente manera:
Después de modificarlo lo compilamos(-con icono parecido a play debajo de File) y si todo anda bien lo subimos (Verifique que esta en el puerto corecto y que tiene seleccionado la placa correcta).Ya que tengasmos el programa en arduino hasta aquí por el momento con la placa (No desconecte)nos vamos a Netbeans.
Paso 2: Abrimos Netbeans y nos vamos a File>New project... nos aparecerá la siguiente ventana.
Seleccionamos java y java application como se ve en la figura y presionamos next > y veremos la siguiente Ventana.
Escoja un nombre para el proyecto nuevo en mi caso use "ArduinoAndJava", desmarque la opción que dice Create Main Class pues no la necesita remos, la ventana le quedara de la siguiente forma.
Cuando tengamos de esta manera la ventana le damos en Next >.
y ahora tendremos la siguiente Ventana.
ya podemos ver nuestro nuevo proyecto creado lo seleccionamos y le damos un click derecho(click secundario), y hasta lo ultimo seleccionamos properties..
Se abrirá otra ventana y seleccionamos Run como se ve en la siguiente imagen.
Localizamos la parte que dice Working Directori y damos click en Browse... ahi se abrirá otra ventana para seleccionar la ruta donde se encuentra la carpeta de arduino así como se ve en la sig. imagen.
Después de seleccionar la ruta veremos algo así.
Una vez hecho esto damos a Ok y terminamos con este paso.
Paso 3: Librerias
Localizamos nuestro proyecto y le damos click a la flecha que esta junto y se abrirán nuevas carpetas y seleccionamos la que dice Libraries como se ve enseguida.
La seleccionamos con un click derecho y veremos lo siguiente.
Le damos click en el boton que dice Create veremos ....
En Libreries Name ponemos ARDUINO y pulsamos ok.
Veremos algo parecido a la imagen de arriba, tendremos que buscar la carpeta de arduino que nos descargamos y dentro de esas carpeta localizamos otra llamada > lib ahi se encuentran todas las librerías que necesitamos para que java pueda comunicarse con arduino. veremos lo siguiente
Seleccionamos todos lo Jars que ahi vemos y pulsamos add JAR/Folder.
Ahora veremos la ventana anterior seleccionamos la librería que acavamos de crear y pulsamos en. Add Libra...
listo tenemos todas la librerías necesarias, y ahora solo necesitamos el código. espero que hasta aquí todo vaya perfecto. continuamos.
Paso 4:Añadir clases
Le damos click derecho a nuestro proyecto nuevo y seleccionamos New>Java class
y le ponemos nombre a nuestra clase, en mi caso le puse "led". como vemos enseguida.
y presionamos Finish. veremos....
y agregamos los siguientes métodos para que todo funcione muy bien.
//arreglo que contine los posibles nombres que tendrán los puertos donde se conectara el arduino
private static final String PORT_NAMES[] = {
//"/dev/tty.usbserial-A9007UX1", // Mac OS X
//"/dev/ttyUSB0", // Linux
"/dev/ttyUSB0"
,"COM3" // Windows
};
private static final String PORT_NAMES[] = {
//"/dev/tty.usbserial-A9007UX1", // Mac OS X
//"/dev/ttyUSB0", // Linux
"/dev/ttyUSB0"
,"COM3" // Windows
};
static public class MyPrefs extends Preferences {
static public void init() {
Preferences.init("/home/victor/.arduino/preferences.txt");//para linux
//Preferences.init("c:/preferences.txt");//para windows
}
}
/** Creates new form led */
public led() {
initComponents();
}
static public void init() {
Preferences.init("/home/victor/.arduino/preferences.txt");//para linux
//Preferences.init("c:/preferences.txt");//para windows
}
}
/** Creates new form led */
public led() {
initComponents();
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
// TODO add your handling code here:
//Este es el codigo del boton que prendera el led se manda un uno que arduino interpretara por su respectivo codigo ascii que para el uno es 49
sendMessage("1");
}//GEN-LAST:event_jButton1ActionPerformed
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
// TODO add your handling code here:
//Este es el codigo del boton que apagara el led se manda un dos que arduino interpretara por su respectivo codigo ascii que para el dos es 50
sendMessage("2");
}//GEN-LAST:event_jButton2ActionPerformed
private void jMenu3MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jMenu3MouseClicked
// TODO add your handling code here:
//extra al darle click cierra toda la aplicacion
this.dispose();
}//GEN-LAST:event_jMenu3MouseClicked
//metodo encardago de mandar los datos a arduino
public static synchronized void sendMessage(String cadena) {
byte[] asd;//arrglo de tipo byte
asd=cadena.getBytes();//linea que sirve para descomponer un caracte a una forma de bits(ascii)
try {
output.write(asd);//escribe en el puerto serie lo que se encuentre en el arreglo bite
} catch (IOException ex) {
Logger.getLogger(led.class.getName()).log(Level.SEVERE, null, ex);//si no loga enviar la cadena lo intenta de nuevo
}
}
/**
* @param args the command line arguments
*/
//metodo principal o main
public static void main(String args[])throws Exception {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new led().setVisible(true);
}
});
MyPrefs.init();
System.out.println("puerto usado: " + MyPrefs.get("serial.port"));
System.out.println("targeta utilizada: " + MyPrefs.get("board"));
/*CommPortIdentifier portId = CommPortIdentifier.getPortIdentifier(
MyPrefs.get("serial.port"));*/
CommPortIdentifier portId = null;
Enumeration portEnum = CommPortIdentifier.getPortIdentifiers();
// iteraciones para buscar el puerto
while (portEnum.hasMoreElements()) {
CommPortIdentifier currPortId = (CommPortIdentifier) portEnum.nextElement();
for (String portName:PORT_NAMES) {
if (currPortId.getName().equals(portName)) {
portId = currPortId;
break;
}
}
}
//se crea objeto de la clase
led m=new led();
//inicializar serialport
serialport = (SerialPort)portId.open(m.getClass().getName(), 9600);
output = serialport.getOutputStream();
serialport.setSerialPortParams(MyPrefs.getInteger("serial.debug_rate"),
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
}
Listo estos son los métodos principales.
Código completo librerías o lo que necesiten solo manden un correo a vctr.31@hotmail.com y con gusto se los are llegar.
una ves que tenga el codigo veran lo siguiente.
(El arduino debe estar conectado con el programa del principio del tutorial)
Y como se puede ver un click en el boton encender y el led lo hara. asi como tambien reaccionara al botón apagado.
Les dejo un vídeo con el funcionamiento del mismo.
por el momento es todo espero que les guste, muchas gracias.
código completo, librerías , dudas y lo que necesiten a vctr.31@hotmail.com
y comente si quiere algún otro tutorial.
hasta pronto
Este comentario ha sido eliminado por un administrador del blog.
ResponderEliminarsii. el archivo preference,txt te lo genera le mismo arduino, si usas win entonces copia ese archivo en tu carpeta raiz osea en c: si te das cuenta el codigo mismo lo dice.
ResponderEliminarmandame un correo a vctr.31@hotmail.com
y con todo el gusto del mundo te mando el codigo completo. te aseguro que funciona.
muy buen tuto
ResponderEliminarmuchas grax
ResponderEliminarmil gracias!
ResponderEliminar(te mandé un mail)
Me fue de mucha ayuda tu post
ResponderEliminarGracias amigo
me podrias pasar el codigo fuente no logro correrlo con lo que pones :D te agradeceria
ResponderEliminartova_ilich@hotmail.com
ResponderEliminarhola chikita como estas esta muy bueno tu tutoria te amo soy chaos
ResponderEliminaraaaaa se me olvidaba prestame tu usb esk me da weba voltiar a verte para pedirtelo sigo siendo chaos
ResponderEliminarcomo puedo hacerlo si el com que utilizo no es el 1 si no el 4??
ResponderEliminarjusto lo que necesitaba. muchas gracias
ResponderEliminarOye esta linea de codigo no esta incorrecta?
ResponderEliminarval=Serial.read()-48;
no salio en la foto, solo falta la linea del principio
ResponderEliminarint val=0;
Gracias victor por compartir tu conocimiento.
ResponderEliminartec_esoj@yahoo.com
Saludos
ojala pudieras compartir el codigo para hacer pruebas con mi arduino.
Prove el codigo y funciono muy bien. Saludos y Feliz año
ResponderEliminartec_esoj@yahoo.com
JCC
Buenas noches. Tengo un Arduino Mega 2560, he intentado este código, y otros que he encontrado en la red, pero no funciona. Tengo entendido que es necesario deshabilitar el autoreset de la tarjeta, pero no he encontrado que eso funcione.
ResponderEliminarHas intentado con la mega 2560?
Por lo que he visto la comunicación se realiza, pero los valores que recibe la tarjeta no son los adecuados, ignoro que pueda estar recibiendo.
Dejo mi correo: antonio.leon@gmail.com
pudiste solucionar con el 2560, tengo el mismo problema
Eliminarsaludos
Victor me parece bien su codigo! Me gustaria que me lo enviaras porfavor! Gracias!
ResponderEliminarpulgamontes@gmail.com
me puedes mandar el codigo del archivo preferences.txt mi correo es crocker205@hotmail.com
ResponderEliminarHola Victor,
ResponderEliminarEs posible que me envíe el código fuente.
Puedo usar arduino en la versión 1.0
Gracias!
cegp.pereira@gmail.com
BUENAS MUY BIEN TUTORIAL, LE AGRADECERIA SI ESTA A SU DISPOSICION ENVIARME EL CODIGO FUENTE. PUEDO USAR ARDUINO R3?
ResponderEliminarSALUDOS, ESPERO SU PRONTA RESPUESTA
hola, muy buen tuto, agradeceria que me mandes el codigo fuente a crc025@alumnos.ucn.cl porfavor gracias de antemano
ResponderEliminarLoU
Hola ESTA MUY BUENO EL TUTORIAL....me preguntaba si me podrias enviar el codigo fuente mi correo es estefaniagabriela100@yahoo.com GRACIAS =)
ResponderEliminarcuales son las librerias que tienes que importar para este codigo
ResponderEliminarHola, Muy buen tuto... si m pudieras enviar el codigo completo a mi correo. Gracias
ResponderEliminarrobinhinos_4@hotmail.com
Hola he seguido todos los pasos, podrias mandarme el código fuente del java es que no logro hacerlo funcionar. Al finalizar todos los pasos me queda este codigo(y no se donde poner tu código). Gracias:
ResponderEliminar/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author dsEr
*/
public class Led {
}
soy el del mensaje 27 de junio de 2012 19:24
ResponderEliminarmi correo es dsernesto@yahoo.com
te molesto si me podrias enviar tu codigo completo lo probe con todos los pasos pero no me funciona.
ResponderEliminarMi e-mail es: MIKE35MAGA@YAHOO.ES
Gracias
hola muy buen tutorial ,
ResponderEliminarme podrias mandar tu codigo completo
te agradeceria bastante
claudioolanda@hotmail.com
Este comentario ha sido eliminado por el autor.
ResponderEliminarbuen tuto, gracias... asumi que val en arduino era de tipo entero al igual que output en netbeans era un campo... te comento que me toco importar todas estas librerias:
ResponderEliminarimport gnu.io.CommPortIdentifier;
import gnu.io.PortInUseException;
import gnu.io.SerialPort;
import gnu.io.UnsupportedCommOperationException;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.logging.Level;
import java.util.logging.Logger;
import processing.app.Preferences;
espero que haya estado bn... gracias nuevamente
buen tutorial para aprendizaje gracias por compartir los conocimientos.
ResponderEliminarhola gracias por el tutorial, pero tengo inconvenientes cuando el programa va a ejecutarse... por fa envíame el codigo completo, te agradecería mucho.
ResponderEliminargracias. lenyvr20@gmail.com
Muchas gracias victor.
ResponderEliminardonde puedo descargar el paquete completo
ResponderEliminarThanks for sharing your knowledge.
ResponderEliminarCould you send me all the code of neatbeans,please?
angelinasetimo@hotmail.com
amigo muchas gracias por la informacion pero tengo un inconveniente con el codigo de java seria posible q me enviara el archivo del codigo fuente . jhonatan0770@hotmail.com
ResponderEliminarHola, me agradó mucho tu tutorial estoy empezando con esto de arduino y java y me fue de mucha utilidad ya que está muy bien explicado, pero tengo algunos problemas. Podrías enviarme el código completo por favor jcho820309@hotmail.com Muchas gracias!!
ResponderEliminarVictor me parece bien su codigo! Me gustaria que me lo enviaras porfavor! Gracias!
ResponderEliminarjosejose1116@hotmail.com
Victor me parece bien su codigo! Me gustaria que me lo enviaras porfavor! Gracias!
ResponderEliminarjosejose1116@hotmail.com
Una pregunta, yo lo estoy haciendo desde ubuntu, y con netbeans, tengo esta linea de codigo "Arduino.ArduinoTX("COM1", 2000, 9600); " donde en COM1 es el puerto en windows, pero en linux que va? por eso no me funciona.. no se si me puedas ayudar.
ResponderEliminaren el tutorial dice que no creas el main y luego si, no comprendo. ademas el output da error al no tenerlo declarado, que tipo de campo es? quiza funcione pero para quien le gusta entenderlo esta bastante dificil, no entiendo como en la misma clase creas un main y llamas a la misma clase, en mi opinion tendrias que hacer la explicacion haciendo main, clases y frames por separado sino directamente hacelo con el block de notas que es lo mismo. igual gracias por la intencion
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarDeja todo lo que precisemos para que funciona, no nos hagas mandar un correo pidiéndote las cosas. Aprende lo que es un blog, y aprende lo que es el mundo de la informática.
ResponderEliminarSalú
Gracias por tu aporte me servira mucho tu post ....
ResponderEliminarSaludos desde Colombia.. Buen Aporte, tenes algùn email, o canal de youtube?
ResponderEliminarHola:
ResponderEliminar¿Puedes poner un cuadro de texto que a parte diga mensajes de "Led encendido" y "Led apagado"?
En lo demás. Buen trabajo.
si, es realmente sencillo
EliminarHola:
EliminarLo he hecho gracias a un amigo por Internet y en muchos lenguajes de programación.
Puedes ver este PDF que estoy haciendo un tutorial.
https://www.dropbox.com/s/ha07f67zieee7v6/Interfaz%20control%20reles%20Arduino.pdf?dl=0
Saludos.
Interfaz Java y Arduino.
ResponderEliminarTutorial diseño de interfaz con Java bajo NetBeans para controlar Arduino desde el puerto serie / USB, odrás encender y apagar un Led, recibir mensajes de textos o comandos desde Arduino.
Ver tutorial.
http://www.slideshare.net/Metaconta2/interfaz-java-y-arduino
Saludos.
Hola amigos, me han parecido muy interesantes todos sus aportes... soy nuevo en esto y quisiera saber como poder enviar un numero por ejemplo 12,3 desde java hacia el arduino y que este lo pueda intepretar tal como se le he enviado y que me permita asignarlo a una variable en el arduino por supuesto. muchas gracias. si alguien me pudiera colaborar mi correo es dantejbm@hotmail.es
ResponderEliminarHola:
EliminarAquí te lo explica.
http://www.slideshare.net/Metaconta2/interfaz-java-y-arduino
Saludos.