#include <SoftwareSerial.
h>
// Définition des broches
#define txPin 2 // Broche SOUT du module RFID
#define enablePin 8 // Broche Enable du module RFID
#define ledPinGreen 11 // Broche de la LED verte
#define ledPinRed 12 // Broche de la LED rouge
SoftwareSerial mySerial(txPin, txPin); // Communication série avec le module RFID
char rfidData[12]; // Tableau pour stocker l'ID de la carte
int index = 0;
const char* recognizedCode = "5300113477"; // Code attendu
void setup() {
Serial.begin(9600); // Communication série avec le moniteur série
mySerial.begin(2400); // Communication série avec le module RFID
(2400 bauds)
pinMode(txPin, INPUT); // Configurer la broche SOUT comme entrée
pinMode(enablePin, OUTPUT); // Configurer la broche Enable comme sortie
pinMode(ledPinGreen, OUTPUT); // Configurer la broche de la LED verte comme
sortie
pinMode(ledPinRed, OUTPUT); // Configurer la broche de la LED rouge comme
sortie
// Activer le module RFID
digitalWrite(enablePin, LOW); // Activer le module (LOW pour activer, HIGH
pour désactiver)
// Éteindre les LEDs au démarrage
digitalWrite(ledPinGreen, LOW);
digitalWrite(ledPinRed, LOW);
Serial.println("RFID Module prêt. Approchez une carte...");
}
void loop() {
// Vérifier si des données sont disponibles depuis le module RFID
if (mySerial.available() > 0) {
char readChar = mySerial.read(); // Lire un caractère depuis le module
if (readChar == 10) { // Si un retour à la ligne (10) est détecté, l'ID de
la carte est complet
rfidData[index] = '\0'; // Ajouter un caractère nul pour terminer la
chaîne
// Nettoyer l'ID en supprimant les espaces et les caractères de
contrôle
String cleanedData = String(rfidData); // Convertir en String pour
manipuler facilement
cleanedData.trim(); // Retirer les espaces en début et fin de chaîne
Serial.print("ID de la carte nettoyé : ");
Serial.println(cleanedData); // Afficher l'ID nettoyé sur le moniteur
série
// Si le code est reconnu
if (strcmp(cleanedData.c_str(), recognizedCode) == 0) {
// Si l'ID correspond au code attendu
Serial.println("Carte reconnue ! LED verte activée.");
// Allumer la LED verte
digitalWrite(ledPinGreen, HIGH); // Allumer la LED verte
digitalWrite(ledPinRed, LOW); // Éteindre la LED rouge
}
// Si le code est incorrect
else {
// Si l'ID ne correspond pas au code attendu
Serial.println("Code non reconnu. LED rouge activée.");
digitalWrite(ledPinGreen, LOW); // Éteindre la LED verte
digitalWrite(ledPinRed, HIGH); // Allumer la LED rouge
}
index = 0; // Réinitialiser l'index pour la prochaine carte
} else {
// Ajouter le caractère lu au tableau
if (index < sizeof(rfidData) - 1) {
rfidData[index++] = readChar;
}
}
}
}