Считыватель Wiegand
- Войдите на сайт для отправки комментариев
Чт, 16/04/2015 - 11:26
Имею пару читывателей совместимый с Wiegand 26.
Подключил его к 12В, объеденил земли источников питания.
DATA0 и DATA1 завел на 2 и 3 пины Arduino Nano. Притянул их встроенным PULL UP.
Настроил прерывания по RISING и считаю количество произошедших прерываний при считывании карточки.
Согласно всем описаниям в сети, в нормальных условиях без помех (я думаю на растоянии 50см у меня помех нет) должно прийти 26 импульсов.
Что по факту:
Считыватель PR-A05 выдает 52 импульса - этот считыватель новый.
Считыватель IronLigic Matrix выдает 390 импульсов - этот считыватель снят с рабочей систему СКУД.
Что делать?
Добрый день.
У меня Matrix 2 HE.
Не получается прочитать в режиме Wiegand карту...
Считыватель при чтении карты пищит, но arduino ничего не принимает... Подскажите как вы читали данные с карты используя Wiegand?
#define MAX_BITS 100 volatile unsigned char databits[MAX_BITS]; volatile unsigned char bitCount = 0; volatile unsigned char flagDone = 1; volatile unsigned int wc=3000; unsigned long facilityCode=0; unsigned long cardCode=0; int buzz = 5; void ISR_INT0(){ bitCount++; flagDone = 0; wc = 3000; } void ISR_INT1(){ bitCount++; databits[bitCount]=1; flagDone = 0; wc = 3000; } void setup() { Serial.begin(9600); pinMode(buzz, OUTPUT); digitalWrite(buzz, HIGH); pinMode(2, INPUT); pinMode(3, INPUT); attachInterrupt(0, ISR_INT0, FALLING); attachInterrupt(1, ISR_INT1, FALLING); wc = 3000; } void loop() { rfid(); } void rfid() { if (flagDone == 0) {if (--wc == 0) flagDone = 1;} if (bitCount > 0 && flagDone == 1) { unsigned int i; if (bitCount == 26) { for (i=2; i<=9; i++) { facilityCode <<=1; facilityCode |= databits[i];} for (i=10; i<26; i++) { cardCode <<=1; cardCode |= databits[i];} printBits(); } bitCount = 0; facilityCode = 0; cardCode = 0; for (i=0; i<MAX_BITS; i++) { databits[i] = 0; } } } void printBits() { digitalWrite(buzz, LOW); Serial.print(facilityCode);Serial.print("_");Serial.println(cardCode);delay(400); digitalWrite(buzz, HIGH); }