sexta-feira, 7 de agosto de 2015

Arduino interação Java

Em alguns projetos, é desejável aplicações que realizem comunicação com o Arduino para leitura e envio de dados. Uma solução é o Processing, porém para desfrutar de vários recursos desenvolveremos em Java! Nesse exemplo, enviaremos os dados lidos pelo sensor de umidade de solo. (O código utilizado no Arduino será o mesmo do tutorial).

Serão necessárias as seguintes bibliotecas:
- RXTXcomm
- Arduino by Panama Hitek (Uma biblioteca interessante que possui comandos que facilitam!)

Após a instalação da biblioteca RXTXcomm, importe-as para o seu projeto!

Abra um novo JFrame, adicione o Label e o campo de texto:
Interação Java e Arduino

O código-fonte completo será:
import Arduino.Arduino; 
import gnu.io.SerialPortEvent;
import gnu.io.SerialPortEventListener;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Window extends javax.swing.JFrame {

 Arduino myarduino = new Arduino();
 
 SerialPortEventListener evento = new SerialPortEventListener() {

 @Override
 public void serialEvent(SerialPortEvent spe) {
 //enquanto houver dados na porta serial 
 if(myarduino.MessageAvailable()==true){
 String teste = myarduino.PrintMessage();
 jTextField.setText(teste);
 }
 
 }
 }; 
 
 public Window() throws ClassNotFoundException {
 initComponents();
 try {
 //configuraçao 
 myarduino.ArduinoRXTX("COM5", 2000, 9600, evento); 
 } catch (Exception ex) {
 Logger.getLogger(Window.class.getName()).log(Level.SEVERE, null, ex);
 }
 }

 
 @SuppressWarnings("unchecked")
 //                           
 private void initComponents() {

 jTextField = new javax.swing.JTextField();
 jLabel1 = new javax.swing.JLabel();

 setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
 addWindowListener(new java.awt.event.WindowAdapter() {
 public void windowOpened(java.awt.event.WindowEvent evt) {
 formWindowOpened(evt);
 }
 });

 jTextField.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
 jTextField.addActionListener(new java.awt.event.ActionListener() {
 public void actionPerformed(java.awt.event.ActionEvent evt) {
 jTextFieldActionPerformed(evt);
 }
 });

 jLabel1.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
 jLabel1.setText("UMIDADE:");

 javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
 getContentPane().setLayout(layout);
 layout.setHorizontalGroup(
 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 .addGroup(layout.createSequentialGroup()
 .addGap(31, 31, 31)
 .addComponent(jLabel1)
 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
 .addComponent(jTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 72, javax.swing.GroupLayout.PREFERRED_SIZE)
 .addContainerGap(25, Short.MAX_VALUE))
 );
 layout.setVerticalGroup(
 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 .addGroup(layout.createSequentialGroup()
 .addGap(34, 34, 34)
 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
 .addComponent(jTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
 .addComponent(jLabel1))
 .addContainerGap(23, Short.MAX_VALUE))
 );

 pack();
 }//                         

 private void jTextFieldActionPerformed(java.awt.event.ActionEvent evt) {                                           
 
 }                                          

 private void formWindowOpened(java.awt.event.WindowEvent evt) {                                  
 
 }                                 

 /**
 * @param args the command line arguments
 */
 public static void main(String args[]) {
 
 java.awt.EventQueue.invokeLater(new Runnable() {
 @Override
 public void run() {
 try {
 new Window().setVisible(true);
 } catch (ClassNotFoundException ex) {
 Logger.getLogger(Window.class.getName()).log(Level.SEVERE, null, ex);
 }
 }
 });
 }

 // Variables declaration - do not modify                     
 private javax.swing.JLabel jLabel1;
 private javax.swing.JTextField jTextField;
 // End of variables declaration                   
}
by Daniela Marques de Morais 29/11/2014

O dado lido na porta serial está na String "teste" e agora poderá ser manipulada!
Lembre-se de alterar as configurações como desejar, conecte o Arduino no PC e compile! Os dados serão atualizados em tempo real:
 
← Postagem mais recente Postagem mais antiga → Página inicial

0 comentários:

Postar um comentário