wiegang+ matrix III /k7612
- Войдите на сайт для отправки комментариев
Пнд, 29/03/2021 - 17:45
Добрый день!
Ищу кто сможет связать arduino mega 2560 и цифровую клаву с NFS по протололу wiegand. Да, я знаю что в библиотеке есть пример. Уже заливал и тестил- не едет. Соединяю контроллер с мегой по дефолту на пины 2 и 3. Помогите завести это. Тестировали на 2 разных ардуинах мегах и 2 контроллерах. Копмиляцию скетча и заливка без ошибок.
Yet Another Arduino Wiegand Library
IDE 1.8
ось ubuntu 14
питание всего 12v. клава пискает при нажатии или подносе карточки, но не передается в serial.
Еще интереснее что не прочесть его(. Где примитивный косяк но не рабоает.
скетч этот:
/*
* Example on how to use the Wiegand reader library with interruptions.
*/
#include <Wiegand.h>
// These are the pins connected to the Wiegand D0 and D1 signals.
#define PIN_D0 2
#define PIN_D1 3
// The object that handles the wiegand protocol
Wiegand wiegand;
// Initialize Wiegand reader
void setup() {
Serial.begin(9600);
//Install listeners and initialize Wiegand reader
wiegand.onReceive(receivedData, "Card readed: ");
wiegand.onReceiveError(receivedDataError, "Card read error: ");
wiegand.onStateChange(stateChanged, "State changed: ");
wiegand.begin(Wiegand::LENGTH_ANY, true);
//initialize pins as INPUT
pinMode(PIN_D0, INPUT);
pinMode(PIN_D1, INPUT);
}
// Continuously checks for pending messages and polls updates from the wiegand inputs
void loop() {
// Checks for pending messages
wiegand.flush();
// Check for changes on the the wiegand input pins
wiegand.setPin0State(digitalRead(PIN_D0));
wiegand.setPin1State(digitalRead(PIN_D1));
}
// Notifies when a reader has been connected or disconnected.
// Instead of a message, the seconds parameter can be anything you want -- Whatever you specify on `wiegand.onStateChange()`
void stateChanged(bool plugged, const char* message) {
Serial.print(message);
Serial.println(plugged ? "CONNECTED" : "DISCONNECTED");
}
// Notifies when a card was read.
// Instead of a message, the seconds parameter can be anything you want -- Whatever you specify on `wiegand.onReceive()`
void receivedData(uint8_t* data, uint8_t bits, const char* message) {
Serial.print(message);
Serial.print(bits);
Serial.print("bits / ");
//Print value in HEX
uint8_t bytes = (bits+7)/8;
for (int i=0; i<bytes; i++) {
Serial.print(data[i] >> 4, 16);
Serial.print(data[i] & 0xF, 16);
}
Serial.println();
}
// Notifies when an invalid transmission is detected
void receivedDataError(Wiegand::DataError error, uint8_t* rawData, uint8_t rawBits, const char* message) {
Serial.print(message);
Serial.print(Wiegand::DataErrorStr(error));
Serial.print(" - Raw data: ");
Serial.print(rawBits);
Serial.print("bits / ");
//Print value in HEX
uint8_t bytes = (rawBits+7)/8;
for (int i=0; i<bytes; i++) {
Serial.print(rawData[i] >> 4, 16);
Serial.print(rawData[i] & 0xF, 16);
}
Serial.println();
}
подключено через 2 и3 как в по дефолту. земля общая. c PULLUP или без не игнрает роли.
Да не, сорян за беспокойство, я написал что мне было интересно узнать что такое Wiegand card readers. Я то сначала подумал что это считыватели карт памяти.
Протокол, который юзают для передачи данных с ридеров. Сломал мозг. До этого сам же написал подобное, теперь никак не завести(
man9913, доджно быть прикалывается.) Это же ж старинный ИНТЕРФЕЙС для карт доступа. Со времён царя гороха.)