Téléverser les fichiers vers "/"

This commit is contained in:
2026-06-02 14:38:31 +00:00
commit ba3aa98ec5

191
Codefinalbarriere.ino Normal file
View File

@@ -0,0 +1,191 @@
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
#define servoEntree 5
#define servoSortie 3
String UID = "AE E6 DA 6F";
MFRC522 rfid(SS_PIN, RST_PIN);
Servo barriere1;
Servo barriere2;
LiquidCrystal_I2C lcd(0x27, 16, 2);
int IR1 = 4;
int IR2 = 6;
bool carEntering = false;
bool carExiting = false;
int placesLibres = 3; // compteur de places
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
pinMode(IR1, INPUT);
pinMode(IR2, INPUT);
barriere1.attach(servoEntree);
barriere2.attach(servoSortie);
barriere1.write(100);
barriere2.write(100);
lcd.setCursor(0, 0);
lcd.print(" ARDUINO ");
lcd.setCursor(0, 1);
lcd.print(" PARKING SYSTEM ");
delay(3000);
lcd.clear();
SPI.begin();
rfid.PCD_Init();
Serial.println("Systeme pret.");
updateDisplay();
}
void loop() {
// --- ENTREE ---
if (digitalRead(IR1) == LOW && !carEntering && !carExiting) {
carEntering = true;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Car Detected!");
delay(1000);
if (placesLibres <= 0) {
// Parking plein
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" PARKING FULL ");
lcd.setCursor(0, 1);
lcd.print(" Desole :( ");
delay(3000);
} else {
int pass = rfunc();
if (pass == 1) {
placesLibres--;
Serial.print("Places restantes : ");
Serial.println(placesLibres);
smoothOpen(barriere1);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Gate Opened!");
delay(10000);
smoothClose(barriere1);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Gate Closed!");
delay(1500);
}
}
carEntering = false;
updateDisplay();
}
// --- SORTIE ---
if (digitalRead(IR2) == LOW && !carExiting && !carEntering) {
carExiting = true;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Car Exiting...");
smoothOpen(barriere2);
delay(10000);
smoothClose(barriere2);
if (placesLibres < 3) {
placesLibres++;
Serial.print("Places restantes : ");
Serial.println(placesLibres);
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Gate Closed!");
delay(1500);
carExiting = false;
updateDisplay();
}
}
void updateDisplay() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" WELCOME! ");
lcd.setCursor(0, 1);
lcd.print("Places : ");
lcd.print(placesLibres);
lcd.print("/3");
}
void smoothOpen(Servo &s) {
for (int pos = 100; pos >= 0; pos--) {
s.write(pos);
delay(10);
}
}
void smoothClose(Servo &s) {
for (int pos = 0; pos <= 100; pos++) {
s.write(pos);
delay(10);
}
}
int rfunc() {
lcd.clear();
lcd.setCursor(4, 0);
lcd.print("Welcome!");
lcd.setCursor(1, 1);
lcd.print("Put your card");
unsigned long t = millis();
while (true) {
if (rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial()) break;
if (millis() - t > 10000) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Timeout...");
delay(1500);
return 0;
}
delay(300);
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Scanning");
String ID = "";
for (byte i = 0; i < rfid.uid.size; i++) {
lcd.print(".");
ID.concat(String(rfid.uid.uidByte[i] < 0x10 ? " 0" : " "));
ID.concat(String(rfid.uid.uidByte[i], HEX));
delay(300);
}
ID.toUpperCase();
Serial.print("Badge scanne : ");
Serial.println(ID.substring(1));
if (ID.substring(1) == UID) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Allowed.");
delay(1500);
return 1;
} else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Wrong card!");
Serial.println("Acces refuse.");
delay(1500);
return 0;
}
}