Pessoal,
Preciso de uma ajuda...
Montei um leitor de RFID usando arduino uno+ RC522 que ao passar o cartão, pesquisa num db e recebe uma variável, via SoftwareSerial, para "falar" qual rele acionar. Variável A,B,C
Agora estou migrando para os leitores Wiegand (EM4100 WG26), mas o sistema não aceita ou recebe a variável pelo Serial.Read() , Já tentei incluir o SoftwareSerial, mas também não recupera a variável e consequentemente não acionam os reles.
Alguém tem uma ideia de como posso receber esta variável pelo SoftwareSerial ?
Estou enviando o código sem o SoftwareSerial. A ideia é fazer a "char leitura" receber a string via serial.
Obrigado !
#include <Wiegand.h>
WIEGAND wg;
int ledPin1 = 7;
int ledPin2 = 6;
int ledPin3 = 5;
int ledPin4 = 4;
char leitura;
void setup() {
Serial.begin(9600); // CONECTA A PORTA SERIAL E DIFINE A VELOCIDADE DE LEITURA
pinMode(ledPin1, OUTPUT); // DEFINE A PINAGEM REFERENTE A VARIAVEL COMO PINO DE SÁIDA
pinMode(ledPin2, OUTPUT); // DEFINE A PINAGEM REFERENTE A VARIAVEL COMO PINO DE SÁIDA
pinMode(ledPin3, OUTPUT); // DEFINE A PINAGEM REFERENTE A VARIAVEL COMO PINO DE SÁIDA
pinMode(ledPin4, OUTPUT); // DEFINE A PINAGEM REFERENTE A VARIAVEL COMO PINO DE SÁIDA
wg.begin();
}
void loop () {
// RECEBE DO SISTEMA A STRING 'a' E ACIONA O LED
if(wg.available() > 0) {
Serial.println(wg.getCode());
char b = wg.getCode();
if(b == 'M'){
digitalWrite(ledPin1, HIGH);
delay(1000);
digitalWrite(ledPin1, LOW);
}
if(b == 'V'){
digitalWrite(ledPin2, HIGH);
delay(1000);
digitalWrite(ledPin2, LOW);
}
if(b == 'E'){
digitalWrite(ledPin3, HIGH);
delay(1000);
digitalWrite(ledPin3, LOW);
}
if(b == 'P'){
digitalWrite(ledPin4, HIGH);
delay(1000);
digitalWrite(ledPin4, LOW);
} }
}
Tags:
As respostas para este tópico estão encerradas.
Será que alguém consegue decifrar este problema? Estou apanhando nisso. Abs.
Cara acredito que você vai ter que modificar a biblioteca para trabalhar de acordo com suas necessidades
poste elas para agente como funciona, você diz que esse seu código trabalha com software serial mais não vi a declaração nele. a declaração fica na biblioteca ?
Eu tenho um software em .net que dispara uma variável "leitora" via serial para RX. Infelizmente funcionava quando era:
1a. versão: Leitor Sparkfun recebia a variável utilizando o SoftwareSerial via RX
2a. versão: o RC522 recebia a variável utilizando o SoftwareSerial via RX com a biblioteca RFID.
3a. versão: mudei para o wiegand e não recebe, pois acredito que o SoftwareSerial não funcione com o wiegand .
A biblioteca do wiegand é a comum. somente esta. a que eu utilizava antes é era somente o SoftwareSerial
A parte do SoftwareSerial é a básica...
#include <SoftwareSerial.h>
SoftwareSerial mySerial(4, 5);
void setup() {
Serial.begin(9600); // CONECTA A PORTA SERIAL E DIFINE A VELOCIDADE DE LEITURA
mySerial.begin(9600); // CONECTA A PORTA SERIAL E DIFINE A VELOCIDADE DE LEITURA
pinMode(ledPin, OUTPUT); // DEFINE A PINAGEM REFERENTE A VARIAVEL COMO PINO DE SÁIDA
}
void loop () {
// ENQUANTO A PORTA SERIAL ESTIVER DISPONÍVEL, FAZ LEITURA E ENVIA AS INFORMAÇÕES PARA O SISTEMA
if(mySerial.available() > 0) {
leitura = mySerial.read();
Serial.print(leitura);
}
?
Estou ficando louco com este SoftwareSerial. Alguem conhece sobre arduino+wiegand 26+softwareserial ?
Segue o arquivo com o codigo do arduino.
O erro evidente no seu codigo é que se você esta esperando 'a' ,não existe nenhuma IF pelo qual alguma ação será ativada referente ao 'a'.
Na verdade o "A" vinha via serial, mas na verdade ele vem M,V,P,E. Via variável leitura da serial .
Esta descrição era da primeira versão, com o RC522 e Sparkfun.
No novo arquivo incluir o código do softwareserial , mas não funfa .
Será que o Wiegand.h corta ou interfere neste SoftwareSerial ?
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por