ist zwar nicht direkt openhab, der vielleicht kann mir ja einer den Wald zeigen, den ich vor lauter Bäumen nicht sehe:
ich habe folgenden Code erfolgreich kopiert und der geht auch.
Dann habe ich den Teil unten "Void umschalten()" ergänzt und oben die alten auskommentiert ( 98-100 und 104-106 ).
Der Sketch läuft, aber die LED bleibt aus.Über serial.println lasse ich mir den Zustand des Pin auslesen.
Da kommt "0" die If Schleife startet mit der "0" Anweisung aber der Pin bleibt auf "0". Warum ??????
Code: Alles auswählen
*
* ----------------------------------------------------------------------
* Example program showing how to read new NUID from a PICC to serial.
* ----------------------------------------------------------------------
* https://circuits4you.com
*
* RC522 Interfacing with NodeMCU
*
* Typical pin layout used:
* ----------------------------------
* MFRC522 Node
* Reader/PCD MCU
* Signal Pin Pin
* ----------------------------------
* RST/Reset RST D1 (GPIO5)
* SPI SS SDA(SS) D2 (GPIO4)
* SPI MOSI MOSI D7 (GPIO13)
* SPI MISO MISO D6 (GPIO12)
* SPI SCK SCK D5 (GPIO14)
* 3.3V 3.3V 3.3V
* GND GND GND
*/
#include <SPI.h>
#include <MFRC522.h>
constexpr uint8_t RST_PIN = 5; // Configurable, see typical pin layout above
constexpr uint8_t SS_PIN = 4; // Configurable, see typical pin layout above
const int ledPin=D4;
const int pinRelais=D8;
int state = digitalRead(4);
MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class
MFRC522::MIFARE_Key key;
// Init array that will store new NUID
byte nuidPICC[4];
void setup() {
Serial.begin(115200);
SPI.begin(); // Init SPI bus
rfid.PCD_Init(); // Init MFRC522
for (byte i = 0; i < 6; i++) {
key.keyByte[i] = 0xFF;
pinMode(ledPin, OUTPUT);
pinMode(pinRelais, OUTPUT);
}
Serial.println(F("This code scan the MIFARE Classsic NUID."));
Serial.print(F("Using the following key:"));
printHex(key.keyByte, MFRC522::MF_KEY_SIZE);
}
void loop() {
// Look for new cards
if ( ! rfid.PICC_IsNewCardPresent())
return;
// Verify if the NUID has been readed
if ( ! rfid.PICC_ReadCardSerial())
return;
Serial.print(F("PICC type: "));
MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
Serial.println(rfid.PICC_GetTypeName(piccType));
// Check is the PICC of Classic MIFARE type
if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
Serial.println(F("Your tag is not of type MIFARE Classic."));
return;
}
if (rfid.uid.uidByte[0] != nuidPICC[0] ||
rfid.uid.uidByte[1] != nuidPICC[1] ||
rfid.uid.uidByte[2] != nuidPICC[2] ||
rfid.uid.uidByte[3] != nuidPICC[3] ) {
Serial.println(F("A new card has been detected."));
// Store NUID into nuidPICC array
for (byte i = 0; i < 4; i++) {
nuidPICC[i] = rfid.uid.uidByte[i];
}
Serial.println(F("The NUID tag is:"));
Serial.print(F("In hex: "));
printHex(rfid.uid.uidByte, rfid.uid.size);
Serial.println();
Serial.print(F("In dec: "));
printDec(rfid.uid.uidByte, rfid.uid.size);
Serial.println();
//digitalWrite(ledPin,HIGH);
//delay(1000);
//digitalWrite(ledPin,LOW);
umschalten();
}
else Serial.println(F("Card read previously."));
//digitalWrite(ledPin,HIGH);
//delay(1000);
//digitalWrite(ledPin,LOW);
umschalten();
// Halt PICC
rfid.PICC_HaltA();
// Stop encryption on PCD
rfid.PCD_StopCrypto1();
}
/**
* Helper routine to dump a byte array as hex values to Serial.
*/
void printHex(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[i] < 0x10 ? " 0" : " ");
Serial.print(buffer[i], HEX);
}
}
/**
* Helper routine to dump a byte array as dec values to Serial.
*/
void printDec(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[i] < 0x10 ? " 0" : " ");
Serial.print(buffer[i], DEC);
}
}
void umschalten ()
{
state = digitalRead(ledPin);
Serial.println(state);
if (state = 0){
digitalWrite(ledPin, HIGH);
state = digitalRead (ledPin);
Serial.println(state);
}
else {
digitalWrite(ledPin,LOW);
Serial.println(state);
}
}
Also RFID Kontakt => ein, nächster Kontakt aus dann wieder ein ...
Vielen Dank
Jojo