Téléverser les fichiers vers "/"
This commit is contained in:
191
Codefinalbarriere.ino
Normal file
191
Codefinalbarriere.ino
Normal 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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user