certes !
(mais la question était sans sous entendu)
j'avais raté le rfid.PCD_Init(); qui remet tout à zéro effectivement
PS:
pour chipoter si on retire la carte 2 secondes et qu'on la remet le programme ne s'en rend pas compte alors (pas votre faute, c'est la spécification qui n'est pas précise
)
on pourrait régler cela avec votre code en ne faisant aucun délai ou ça revient à faire une loop toute simple qui allume la LED tant que la carte est détectée
void loop() {
digitalWrite(pinLEDStrip, cardCheck(bonUID) ? HIGH : LOW);
}
et pour chipoter un peu plus, si je présente une carte qui a un UID de 10 octets, on accède au tableau bonUID au delà de ses bornes.
On pourrait corriger comme cela:
boolean cardCheck(byte bonUID[]) {
rfid.PCD_Init();
if (rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial()) // on a lu avec succès son contenu
return (memcmp(rfid.uid.uidByte, bonUID, 4) == 0);
return false;
}
PS2/ j'ai pas testé ![]()