1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | // eingebaute Bibliothek einbinden #include “Servo.h” // RFID-Bibiothek hinzufügen #include “MFRC522.h” // Anschlüsse definieren #define SDA 10 #define RST 9 // Schranke nach Betreten wieder schließen bool Status = false; // RFID-Empfänger benennen MFRC522 mfrc522(SDA, RST); // Bezeichnung des Motors Servo Motor; void setup() { // Pin des Motors zuordnen Motor.attach(7); Serial.begin(9600); SPI.begin(); // Initialisierung des RFID-Empfängers mfrc522.PCD_Init(); // Motor in “geschlossen”-Position fahren Motor.write(5); } void loop() { String WertHEX; String WertDEZ; // Wenn keine Karte in Reichweite ist .. if (!mfrc522.PICC_IsNewCardPresent()) { // .. wird die Abfrage wiederholt. return; } // Wenn kein RFID-Sender ausgewählt wurde .. if (!mfrc522.PICC_ReadCardSerial()) { // .. wird die Abfrage wiederholt. return; } Serial.println(F(“ Karte entdeckt!”)); // HEX-Werte/Dezimal-Werte in Strings schreiben for (byte i = 0; i < mfrc522.uid.size; i++) { WertHEX = WertHEX + String(mfrc522.uid.uidByte[i], HEX) + ” “; WertDEZ = WertDEZ + String(mfrc522.uid.uidByte[i], DEC) + ” “; // Kleinbuchstaben des HEX-Wertes in Großbuchstaben umwandeln WertHEX.toUpperCase(); } Serial.println(); // hexadezimal/dezimal anzeigen Serial.println(“ Wert in hexadezimal: ” + WertHEX); Serial.println(“ Wert in dezimal: ” + WertDEZ); // Leerzeichen am Ende entfernen WertDEZ.trim(); // WertDEZ mit korrektem Wert vergleichen -> Schranke öffnen if (WertDEZ.compareTo(“80 236 29 59”) == 0) { Serial.println(“ korrekte Karte -> Schranke \u00f6ffnen”); Motor.write(90); Status = !Status; } if (WertDEZ.compareTo(“80 236 29 59”) == 0 && !Status) { Serial.println(“ korrekte Karte/Zutritt erfolgt -> Schranke schlie\u00dfen”); Motor.write(5); } // wenn die Karte falsch ist else if (WertDEZ.compareTo(“80 236 29 59”) != 0) { Motor.write(5); Serial.println(“ falsche Karte -> Schranke geschlossen lassen”); Status = false; } delay(500); } |
Letzte Aktualisierung: