A FECHADURA ELETRÔNICA
Por: Lidieisa • 16/5/2018 • 1.913 Palavras (8 Páginas) • 397 Visualizações
...
#include //Importação da biblioteca Stepper.h, usada para controlar o motor de passo.
const int passos = 30; // Define o número de passos para o motor.
int botao=0;
int bitEntrada; // Recebe bits da entrada serial.
boolean porta=false; // Verifica a condição da porta.
Stepper myStepper(passos, 8, 9, 10, 11); // Inicializa a biblioteca Stepper, definindo os pinos 8 a 11.
void setup() {
myStepper.setSpeed(100); // Define a velocidade de rotação para 100 RPM.
Serial.begin(9600);// Inicializa a porta serial.
}
void loop() {
botao=digitalRead(3); // Lê o status do botao no pino digital 3.
if(Serial.available()>0){ // Se a porta serial estiver abilitada :
bitEntrada = Serial.read(); // bitEntrada recebe a leitura .
if(bitEntrada = 1){ // Se o bit for igual a "1" ou seja, o usuário digitou a senha corretamente.
myStepper.step(passos); //O motor realizará o número de passos já definido, e então, abrirá a fechadura.
}
}
if(botao==HIGH && porta == false){ //Se o botão está pressionado (porta fechada) e a fechadura fechada.
myStepper.step(0); // O motor não rotacional.
}
else if(botao==LOW){ // Se o botão não está pressionado (porta aberta).
porta = true ;
}if(botao==HIGH && porta == true){ // Se o botão estiver pressionado (porta fechada) e a fechadura aberta.
myStepper.step(-passos); // Motor gira com o mesmo número de passos, mas em sentido contrário.
porta = false ;
}
else{ // Qualquer outra condição, motor parado.
myStepper.step(0);
}
}
A criação da interface que irá interagir com o usuário, foi programada usando a linguem Java. Para isso foi necessário a instalação do JDK, compilador Java e o NetBeans 8.1, IDE usada para descrição das linhas de código. A interface é composta por uma janela, que contém um campo de senha em branco, dígitos de 0 a 9, botão X (apagar) e botão OK. Além disso, também foi necessário fazer a conexão NetBeans Java com a IDE de desenvolvimento do arduíno. Abaixo está descrito os códigos de conexão e os códigos que aderiram uma determinada função para cada botão da interface.
package Interface;
import com.sun.javafx.collections.MappingChange;
import gnu.io.CommPortIdentifier; //Após a instalação do DLL RXTXcomm libera a importação.
import gnu.io.NoSuchPortException; //Após a instalação do DLL RXTXcomm libera a importação.
import gnu.io.SerialPort;
import java.io.IOException;
import java.io.OutputStream;
import java.io.InputStream;
import java.util.Map;
import javax.swing.JOptionPane;
public class Tela extends javax.swing.JFrame {
private OutputStream serialOut;
private int taxa;
private String portaCOM;
String senha; //Variável string pra armazenar a senha que o usuário digita. String teclado; //Variável string teclado para armazenar as a função de casa botão numérico de 0 a 9.
public Tela() {
this.portaCOM = "COM3"; //Conexão com o arduíno usando a porta COM3.
this.taxa = 9600;
this.initialize();
senha = "00000"; //Senha usada para abrir a porta.
teclado=""; //Teclado vazio.
initComponents();
}//Método que verifica se a comunicação com a porta serial está ok.
private void initialize() {
try { //Define uma variável portId do tipo CommPortIdentifier para realizar a comunicação serial.
CommPortIdentifier portId = null;
try { //Tenta verificar se a porta COM informada existe.
portId = CommPortIdentifier.getPortIdentifier(this.portaCOM);
}catch (NoSuchPortException npe) {
//Caso a porta COM não exista será exibido um erro.
JOptionPane.showMessageDialog(null, "Porta COM não encontrada.",
"Porta COM", JOptionPane.PLAIN_MESSAGE);
}
//Abre a porta COM.
SerialPort port = (SerialPort) portId.open("Comunicação serial", this.taxa);
serialOut = port.getOutputStream();
port.setSerialPortParams(this.taxa, //Taxa de transferência da porta serial.
SerialPort.DATABITS_8, //Taxa de 10 bits 8 (envio).
...