Hallo zusammen,
kann mir bitte jemand helfen? ich habe gerade erst mit dem programmieren angefangen und kenne mich noch nicht so gut hier aus.
Ich würde gerne diese Antenne mit meinem Arduino UNO verbinden, die Tags auslesen und als Zugangskontrolle einsetzen:
leider funktioniert keines der Programme die hier angegeben werden:
Ich habe mir die beiden Librarys die bei Arduino zu dem Thema Wiegand zu finden waren runter geladen:
- Yet_Another_Arduino_Wiegand_Library
- RfidDb
Leider ohne großen erfolg.
Bei diesem Programm (interrupts), aus dem Ordner "Yet_Another_Arduino_Wiegand_Library",
bekam ich Teilerfolge.
Hier habe ich DATA 0 auf PIN 2 gelegt und DATA 1 auf PIN 3.
Die Antenne scheint die Karte zu erkennen, aber es erscheint immer nur ein "CONNECTED" : "DISCONNECTED" auf dem Monitor.
Kann mir bitte jemand helfen? Dieses Projekt liegt mir sehr am Herzen und ich brauche eure Hilfe!
Sollte das Programm funktionieren bin ich auch bereit eine Aufwandsentschädigung für den Retter aufzubringen.
Danke schon mal
/*
- 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.
// Ensure your board supports external Interruptions on these pins
#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.onStateChange(stateChanged, "State changed: ");
wiegand.begin(WIEGAND_LENGTH_AUTO);
//initialize pins as INPUT and attaches interruptions
pinMode(PIN_D0, INPUT);
pinMode(PIN_D1, INPUT);
attachInterrupt(digitalPinToInterrupt(PIN_D0), pinStateChanged, CHANGE);
attachInterrupt(digitalPinToInterrupt(PIN_D1), pinStateChanged, CHANGE);
//Sends the initial pin state to the Wiegand library
pinStateChanged();
}
// Every few milliseconds, check for pending messages on the wiegand reader
// This executes with interruptions disabled, since the Wiegand library is not thread-safe
void loop() {
noInterrupts();
wiegand.flush();
interrupts();
//Sleep a little -- this doesn't have to run very often.
delay(100);
}
// When any of the pins have changed, update the state of the wiegand library
void pinStateChanged() {
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);
//Print value in HEX
uint8_t bytes = (bits+7)/8;
for (int i=0; i<bytes; i++) {
Serial.print(data >> 4, 16);
_ Serial.print(data & 0xF, 16);_
* }*
* Serial.println();*
}