Medidor de bateria
Enviado por Israel Sanchez Galvan • 3 de Septiembre de 2018 • Tutorial • 5.989 Palabras (24 Páginas) • 145 Visitas
Introducción
En este proyecto desarrollaremos un pequeño programa en el cual vamos a conectar arduino con java (eclipse). El programa consiste en medir el voltaje de una batería para que este voltaje aparezca en un JFrame y en la parte de arduino este es el que se encargara de medir el voltaje de la batería para posteriormente mandarle esos datos a java y los imprima en una tabla.
Desarrollo del proyecto
Parte de Arduino
Como primera parte se usó un pequeño programa de arduino que es el que se encarga de medir y registrar el voltaje de la batería como al igual tiene la acción de encender 3 leds, uno verde que es cuando la batería indica que tiene bastante carga, uno amarillo que indica cuando la batería esta medio cargada y por ultimo uno rojo que indica cuando la batería esta descargada. A continuación se anexa el código el cual podemos encontrar en internet.[pic 1]
[pic 2][pic 3]
Parte de Java
En la parte de java eclipse lo que hicimos fue crear un JFrame como se muestra a continuación.
[pic 4]
Como se puede observar se usaron dos botones, uno para conectar a java con arduino y este nos empiece a mandar datos cuando conectemos la batería y otro para limpiar los daros de la pantalla. También se colocaron 3 textField que son los que al momento de conectar la batería indicaran cuando esta esté bien cargada, medio cargada y descargada por medio de 3 colores: Verde para batería cargada, Amarillo para batería medio cargada y Rojo para batería descargada.
Por ultimo usamos un scrollPane para insertar una columna que es la que se encargara de imprimir el voltaje de la batería medida por arduino. A continuación les mostramos el código desarrollado de java.
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import com.panamahitek.ArduinoException;
import com.panamahitek.PanamaHitek_Arduino;
import jssc.SerialPortEvent;
import jssc.SerialPortEventListener;
import jssc.SerialPortException;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.util.Calendar;
import java.awt.event.ActionEvent;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.JScrollPane;
import java.awt.Font;
import java.awt.Color;
import java.awt.SystemColor;
public class sensor_arduino
private JPanel contentPane;
float volt;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
sensor_arduino frame = new sensor_arduino();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
PanamaHitek_Arduino arduino = new PanamaHitek_Arduino();
private SerialPortEventListener evento =new SerialPortEventListener() {
@Override
public void serialEvent(SerialPortEvent arg0) {
// TODO Auto-generated method stub
try {
if(arduino.isMessageAvailable()) {
volt =Float.parseFloat(arduino.printMessage());
if(volt>1.5 ){
textField.setBackground(Color.GREEN);
textField_1.setBackground(Color.GRAY);
textField_2.setBackground(Color.GRAY);
}
if(volt>1.4 && volt<1.5 ){
textField_1.setBackground(Color.YELLOW);
...