Abri este tópico não porque estou com dúvidas mas para contribuir com o fórum. Caso esteja errado minha postagem aqui peço aos administradores que me auxiliem para postar no local correto. Grato pela compreensão.

Olá pessoal, fiz uma biblioteca para trabalhar com leitores HID que trabalhem na plataforma e comunicação Wiegand. Este tutorial não serve para os leitores que conversem serial diretamente. 

A biblioteca no link: https://sites.google.com/site/trabalhan ... ects=0&d=1
O tutorial está no linkhttps://sites.google.com/site/trabalhan ... id-wiegand

Nela possui um exemplo de leitura de cartões HID. Para instalar o leitor no arduino ligue em 5V, o GND e o Data0 na porta 2 e o Data 1 na porta 3 do Arduino.

Imagem

Abaixo o código da Sketch de teste que vai no arquivo anexo:

/*
* HID ProxPoint 
* Autor: Ricardo Sampaio, Sorocaba SP
* Email: jricksam@gmail.com
* Fone: (15)996455614

* Este codigo faz a leitura dos cartoes HID mas deve-se atentar para a pinagem correta.
* Pinos do Arduino
* 2 - ProxPoint Green (DATA 0)
* 3 - ProxPoint White (DATA 1)
* 5V - To ProxPoint Red
* GND - To ProxPoint Black
*
* O Leitor entrega os dados no formato 26-Bit Wiegant: 
* Bit 1 = Even Parity over Bits 2 - 13
* Bits 2 - 9 = Facility Code (0 to 255) Bit 2 is MSB
* Bits 10 - 25 = ID Number (0 to 65,535) Bit 10 is MSB
* Bits 26 Odd parity over bits 14 to 25
*
* Infelismente este exemplo somente funciona com os data 0 e 1 ligados a porta 2 e 3 do arduino UNO
* Segundo este link http://arduino.cc/en/Reference/attachInterrupt nao tem como ligar em outra porta devido o uso da funcao attachInterrupt()
*/

#include "HID.h"
HID hid;

void setup()
{
isr(0);
isr(1);
hid.begin(); 

Serial.begin(9600);
Serial.println("Passe o cartao leitor:");
}

void loop() {
long data = hid.readHID();
if(data!=0)
{
Serial.println(data, HEX);
}
}

void reader1One(void) {
hid.reader1Count++;
hid.reader1 = hid.reader1 1;
hid.reader1 |= 1;
}

void reader1Zero(void) {
hid.reader1Count++;
hid.reader1 = hid.reader1 1;
}

void isr(int action) {
if ( action == 1 ) { 
// Start
attachInterrupt(0, reader1Zero, FALLING);//DATA0 to pin 2
attachInterrupt(1, reader1One, FALLING); //DATA1 to pin 3
delay(10); 
} else { 
// Stop
detachInterrupt(0);
detachInterrupt(1);

}

Exibições: 549

Responder esta

Respostas a este tópico

Amigo, perfeito esse seu código! Era o que precisava. Muito obrigado por compartilhar. Valeu mesmo!!!!

Olá Ricardo, 

Parabéns esse é o espirito de todos, colaborar e receber colaboração, mas permita apenas avisar algo, existe uma sugestão mas que já se tornou praticamente uma regra, que é a de não colar códigos na área de texto, e sim anexar.

Por favor veja este este topico Rui Viana Como postar

Por outra parte, lembre-se que você tem uma área exclusiva como todos os membros desta comunidade, que é o seu blog, clicando em Blog e logo em meu blog você será direcionado para seu blog onde pode publicar seus projetos deixando um registro fixo do seu projeto.

Saudações.

Abs.

CK

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2018   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço