wiegang+ matrix III /k7612

rewer
Offline
Зарегистрирован: 29.03.2021

Добрый день!

Ищу кто сможет связать  arduino mega 2560 и цифровую клаву с NFS  по протололу wiegand. Да, я знаю что в библиотеке есть пример. Уже заливал и тестил- не едет. Соединяю контроллер с мегой по дефолту на пины 2 и 3. Помогите завести это. Тестировали на 2 разных ардуинах мегах и 2 контроллерах. Копмиляцию скетча и заливка без ошибок.

Yet Another Arduino Wiegand Library

IDE 1.8

ось ubuntu 14

питание всего 12v.  клава пискает при  нажатии или подносе карточки, но не передается в serial.

man9913
Offline
Зарегистрирован: 19.03.2016
Интересно
 
Yet Another Arduino Wiegand Library: An Arduino Library to receive data from Wiegand card readers.
 
rewer
Offline
Зарегистрирован: 29.03.2021

Еще интереснее что не прочесть его(.  Где примитивный косяк но не рабоает.

скетч этот:

/*
 * 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 или без не игнрает роли.

man9913
Offline
Зарегистрирован: 19.03.2016

Да не, сорян за беспокойство, я написал что мне было интересно узнать что такое Wiegand card readers. Я то сначала подумал что это считыватели карт памяти.

rewer
Offline
Зарегистрирован: 29.03.2021

Протокол, который юзают для передачи данных с ридеров.  Сломал мозг. До этого сам же написал подобное, теперь никак не завести(

Green
Offline
Зарегистрирован: 01.10.2015

man9913, доджно быть прикалывается.) Это же ж старинный ИНТЕРФЕЙС для карт доступа. Со времён царя гороха.)