Hallo,
Brauche Hilfe bei der Programmierung Relay Schaltung über nfc wiederholend.
Meine Hardware:
NodeMCU Amica Modul V2 ESP8266 ESP-12F
RFID-RC522
AZDelivery 2er Relais Modul 5V mit Optokoppler Low-Level-Trigger
Mein bisheriger erfolg:
Ich möchte gerne das wenn ich einen nfc chip an den leser halte und er erkannt wird als Access Granted das Relay 1 auf high geschalten wird und Relay 2 nach 5 sek nur für 1,5 sekunden auf High geschalten wird und wieder auf low geschalten wird. Das habe ich bis hier her auch geschafft.
Ab hier bräuchte ich eure Hilfe:
Nun möchte ich das wenn ich den nfc chip nochmals an den leser halte und erkannt wurde Access Granted das dieser mir dann das Relay 1 wieder auf low schaltet.
Beim nächsten mal lesen des nfc Chips sollte das ganze skript wieder von vorne anfangen.
Ich füge mein bisheriges Skript mal ein und hoffe das mir jemand helfen kann. Leider kenn ich mich nicht so sehr mit dem Programmieren aus.
Vielen Dank im vorraus.
[tt][tt]Lg Daniel[/tt][/tt]
#define RST_PIN 5
#define SS_PIN 4
#include <SPI.h>
#include <MFRC522.h>
MFRC522 mfrc522(SS_PIN, RST_PIN);
int relay1 = 15;
int relay2 = 2;
void setup() {
Serial.begin(115200);
SPI.begin();
mfrc522.PCD_Init();
pinMode (relay1,OUTPUT);
pinMode (relay2,OUTPUT);
}
void accessGranted() {
Serial.println(" Access Granted ");
digitalWrite(relay1, HIGH);
delay(5000);
digitalWrite(relay2, HIGH);
delay(1500);
digitalWrite(relay2, LOW);
}
void accessRefused() {
Serial.println(" Access Refused ");
delay(3000);
}
void loop() {
if ( ! mfrc522.PICC_IsNewCardPresent()) {
return;
}
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}
//Zeigt die UID im serial monitor
Serial.println();
Serial.print(" UID tag :");
String content= "";
for (byte i = 0; i < mfrc522.uid.size; i++) {
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(mfrc522.uid.uidByte[i], HEX));
}
content.toUpperCase();
Serial.println();
Serial.print(" PICC type: ");
MFRC522::PICC_Type piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);
Serial.println(mfrc522.PICC_GetTypeName(piccType));
if (content.substring(1) == "AA 42 1E 28" || content.substring(1) == "4A AF 31 29" || content.substring(1) == "04 C5 A7 1A AC 6A 80" || content.substring(1) == "04 A9 A7 1A AC 6A 80") {
accessGranted();
}
else {
accessRefused();
}
}