Arduino
Arduino
h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
void setup() {
Serial.begin(9600); // For serial communication with Serial Monitor (PC)
Serial2.begin(9600); // For serial communication with NodeMCU via Serial2
(GPIO1 and GPIO3)
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Parking System");
delay(2000);
lcd.clear();
pinMode(trigPin4, OUTPUT);
pinMode(echoPin4, INPUT);
gateControlServo.attach(gateControlServoPin);
gateControlServo.write(90); // Initial position
Serial.println("System Initialized!");
}
void loop() {
handleSerialInput();
controlEntranceGate(trigPin4, echoPin4, gateControlServo);
delay(1000);
}
// Calculate distance in cm
int distance = duration * 0.034 / 2;
String getSlotStatus(int slot, int trig, int echo, int ledRed, int ledYellow, int
ledGreen, bool &isReserved, int &lastStatus) {
int distance = getDistance(trig, echo);
int currentStatus = (distance > 0 && distance <= 10) ? 1 : 0;
if (isReserved) {
digitalWrite(ledYellow, HIGH);
digitalWrite(ledRed, LOW);
digitalWrite(ledGreen, LOW);
return "Slot " + String(slot) + ": Reserved";
}
void handleSerialInput() {
if (Serial2.available() > 0) {
String message = Serial2.readString();
message.trim();
message.toUpperCase(); // Make sure to handle case insensitivity.
Serial.print("Received from NodeMCU: ");
Serial.println(message);