#include <Servo.h>
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
#define servoPin 3
Servo servo;
MFRC522 rfid(SS_PIN, RST_PIN);
String carteB= "01 02 03 04";
String carteV= "11 22 33 44";
int soldeB = 50;
int soldeV = 50;
int prix = 20;
void setup()
{
SPI.begin();
rfid.PCD_Init();
Serial.begin(9600);
pinMode(7, INPUT); // capteur arrive en entrée
pinMode(8, INPUT); // capteur de sort en entrée
pinMode(2, OUTPUT); // LED Rouge en sortie
pinMode(4, OUTPUT); // LED vert en entrée
pinMode(3, OUTPUT);
servo.attach(servoPin);
servo.write(90);
digitalWrite(2, HIGH);digitalWrite(4, LOW);
}
void loop()
{ int b=digitalRead(8);
if(b==1){
Serial.println("Détection : la voiture sort");
delay(5000);
servo.write(90);
digitalWrite(2, HIGH);digitalWrite(4, LOW);
}
else {
int a=digitalRead(7);
if(a==1){
Serial.println("Détection : la voiture arrivee");
delay(5000);
Serial.println("Systeme pret...");
Serial.println("Scanner une carte...");
}
if (!rfid.PICC_IsNewCardPresent()) return;
if (!rfid.PICC_ReadCardSerial()) return;
String uid = "";
for (byte i = 0; i < rfid.uid.size; i++)
{
if (rfid.uid.uidByte[i] < 0x10) uid += "0";
uid += String(rfid.uid.uidByte[i], HEX);
if (i != rfid.uid.size - 1) uid += " ";
}
uid.toUpperCase();
Serial.print("UID: ");
Serial.println(uid);
delay(5000);
if (uid == carteB)
{ if (soldeB >= prix)
{ Serial.println("Acces autorise");
soldeB-= prix;
servo.write(0);
digitalWrite(2, LOW);digitalWrite(4, HIGH);}
else {Serial.println("Acces refusé");}}
if (uid == carteV)
{ if (soldeV >= prix)
{ Serial.println("Acces autorise");
soldeV-= prix;
servo.write(0);
digitalWrite(2, LOW);digitalWrite(4, HIGH);}
else {Serial.println("Acces refusé");}
}
}
}