Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Studant Tag ---> 29 EC 2A B9
- //Dr Card #1 ---> 22 AC 75 34
- //Dr Card #2 ---> B6 BC 72 2B
- //Dr Card #3 ---> C0 6B BB 32
- //Dr Card #4 ---> C0 BD B6 32
- /*
- RTC [8AM-->4PM DR only Allowed] ✔
- IR Sensor [Parking_1] ✔
- IR Sensor [Parking_2] ✔
- IR Sensor [Parking_3] ✔
- LED [Parking_1] ✔
- LED [Parking_2] ✔
- LED [Parking_3] ✔
- RFID Cards x5 [All Open] ✔
- Button [To Enter with No CARD] ✔
- LCD 20*4 [Show (IN#)+(OUT#)+(Current#)] ✔
- IR Sensor [Exit] ✔
- Servo_IN ✔
- Servo_OUT ✔
- */
- #include <SPI.h>
- #include <Wire.h>
- #include <Servo.h>
- #include "RTClib.h"
- #include <MFRC522.h>
- #include <LiquidCrystal_I2C.h>
- #define SS_PIN 10
- #define RST_PIN 9
- #define button_PIN 8
- #define exit_PIN 7
- #define LED_parking_1 2
- #define LED_parking_2 3
- #define LED_parking_3 4
- #define sensor_parking_1 A1
- #define sensor_parking_2 A2
- #define sensor_parking_3 A3
- Servo servoIN; //5
- Servo servoOUT; //6
- RTC_DS3231 rtc;
- MFRC522 mfrc522(SS_PIN, RST_PIN);
- LiquidCrystal_I2C lcd(0x27, 16, 2);
- int emptySpaces = 3;
- bool parking_1 = 0;
- bool parking_2 = 0;
- bool parking_3 = 0;
- int CurrentCount = 0;
- int exit_status = 0;
- int button_status = 0;
- char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
- void setup() {
- Serial.begin(9600);
- pinMode(LED_parking_1, OUTPUT);
- pinMode(LED_parking_2, OUTPUT);
- pinMode(LED_parking_3, OUTPUT);
- pinMode(sensor_parking_1, INPUT);
- pinMode(sensor_parking_2, INPUT);
- pinMode(sensor_parking_3, INPUT);
- pinMode(button_PIN, INPUT);
- pinMode(exit_PIN, INPUT);
- digitalWrite(LED_parking_1, 0);// Green ON --- Parking 1
- digitalWrite(LED_parking_2, 0);// Green ON --- Parking 2
- digitalWrite(LED_parking_3, 0);// Green ON --- Parking 3
- SPI.begin();
- mfrc522.PCD_Init();
- servoIN.attach(5);
- servoOUT.attach(6);
- servoIN.write(0);
- servoOUT.write(0);
- lcd.init();
- lcd.init();
- lcd.backlight();
- lcd.setCursor(0, 0);
- lcd.print("Starting...");
- delay(1000);
- if (! rtc.begin()) {
- Serial.println("Couldn't find RTC");
- Serial.flush();
- while (1) delay(10);
- }
- if (rtc.lostPower()) {
- Serial.println("RTC lost power, let's set the time!");
- rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
- }
- }
- void loop() {
- DateTime now = rtc.now();
- button_status = digitalRead(button_PIN);
- exit_status = digitalRead(exit_PIN);
- chkSensors();
- lcd.setCursor(0, 0);
- // "****************"
- lcd.print("Parking Empty:");
- lcd.setCursor(0, 1);
- // "****************"
- lcd.print(emptySpaces);
- lcd.print(" ");
- if ( button_status > 0 && emptySpaces > 0) {
- // Open IN Gate
- servoIN.write(90);
- delay(3000);
- servoIN.write(0);
- }
- if (exit_status == 0) {
- // Open OUT Gate
- servoOUT.write(90);
- delay(3000);
- servoOUT.write(0);
- }
- if ( ! mfrc522.PICC_IsNewCardPresent()) {
- return;
- }
- if ( ! mfrc522.PICC_ReadCardSerial() ) {
- return;
- }
- String content = "";
- byte letter;
- for (byte i = 0; i < mfrc522.uid.size; i++) {
- Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
- Serial.print(mfrc522.uid.uidByte[i], HEX);
- content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
- content.concat(String(mfrc522.uid.uidByte[i], HEX));
- }
- Serial.println();
- content.toUpperCase();
- //------------ Code
- // 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16
- if (now.hour() >= 8 && now.hour() <= 16) {
- // Allow Access RFID Scanner for Dr Only
- //Dr Card #1 ---> 22 AC 75 34
- //Dr Card #2 ---> B6 BC 72 2B
- //Dr Card #3 ---> C0 6B BB 32
- //Dr Card #4 ---> C0 BD B6 32
- // 1 2 3 4 5
- if (content.substring(1) == "22 AC 75 34" || content.substring(1) == "B6 BC 72 2B" || content.substring(1) == "C0 BD B6 32" || content.substring(1) == "C0 6B BB 32")
- {
- if (emptySpaces > 0) {
- // Open IN Gate
- servoIN.write(90);
- delay(3000);
- servoIN.write(0);
- }
- }
- else
- {
- // Don't Open IN Gate
- servoIN.write(0);
- }
- }
- // 17 - 18 - 19 - 20 - 21 - 22 - 23 - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7
- else {
- // Allow Access RFID Scanner for All
- //Studant Tag ---> 29 EC 2A B9
- //Dr Card #1 ---> 22 AC 75 34
- //Dr Card #2 ---> B6 BC 72 2B
- //Dr Card #3 ---> C0 6B BB 32
- //Dr Card #4 ---> C0 BD B6 32
- // 1 2 3 4 5
- if (content.substring(1) == "29 EC 2A B9" || content.substring(1) == "22 AC 75 34" || content.substring(1) == "B6 BC 72 2B" || content.substring(1) == "C0 BD B6 32" || content.substring(1) == "C0 6B BB 32")
- {
- if (emptySpaces > 0) {
- // Open IN Gate
- servoIN.write(90);
- delay(3000);
- servoIN.write(0);
- }
- }
- else
- {
- // Don't Open IN Gate
- servoIN.write(0);
- }
- }
- }//end of LOOP
- void chkSensors() {
- parking_1 = digitalRead(sensor_parking_1);
- parking_2 = digitalRead(sensor_parking_2);
- parking_3 = digitalRead(sensor_parking_3);
- emptySpaces = parking_1 + parking_2 + parking_3;
- if (parking_1 == 0) {
- digitalWrite(LED_parking_1, 1);// Red ON --- Parking 1
- }
- else if (parking_1 == 1) {
- digitalWrite(LED_parking_1, 0);// Green ON --- Parking 1
- }
- if (parking_2 == 0) {
- digitalWrite(LED_parking_2, 1);// Red ON --- Parking 2
- }
- else if (parking_2 == 1) {
- digitalWrite(LED_parking_2, 0);// Green ON --- Parking 2
- }
- if (parking_3 == 0) {
- digitalWrite(LED_parking_3, 1);// Red ON --- Parking 3
- }
- else if (parking_3 == 1) {
- digitalWrite(LED_parking_3, 0);// Green ON --- Parking 3
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement