IOP391_arduino
IOP391_arduino
h>
#include <Servo.h>
#include <NTPClient.h>
#include <WiFiUdp.h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org", 25200, 60000);
Servo entryServo;
Servo exitServo;
WiFiClient client;
Adafruit_MQTT_Client mqtt(&client, MQTT_SERV, MQTT_PORT, MQTT_NAME, MQTT_PASS);
void setup() {
Serial.begin(9600);
WiFi.begin(ssid, pass);
Serial.print("Connecting to WiFi");
timeClient.begin();
mqtt.connect();
entryServo.attach(D4);
exitServo.attach(D5);
pinMode(carEnter, INPUT);
pinMode(carExited, INPUT);
pinMode(slot1, INPUT);
pinMode(slot2, INPUT);
pinMode(slot3, INPUT);
}
void loop() {
MQTT_connect();
timeClient.update();
if (entryDetected) {
count++;
entryServo.write(OPEN_ANGLE);
delay(3000);
entryServo.write(CLOSE_ANGLE);
CarsParked.publish(count); // Xuất bản số lượng xe đỗ hiện tại
}
if (exitDetected) {
count--;
exitServo.write(OPEN_ANGLE);
delay(3000);
exitServo.write(CLOSE_ANGLE);
CarsParked.publish(count); // Cập nhật số lượng xe khi xe rời đi
}
// Kiểm tra và cập nhật thời gian vào/ra cho từng vị trí
checkSlot(s1, s1_occupied, EntrySlot1, ExitSlot1, currentTime);
checkSlot(s2, s2_occupied, EntrySlot2, ExitSlot2, currentTime);
checkSlot(s3, s3_occupied, EntrySlot3, ExitSlot3, currentTime);
}
void MQTT_connect() {
int8_t ret;
if (mqtt.connected()) {
Serial.println("MQTT already connected");
return;
}