//memasang library
#include <WiFi.h>
#include <PubSubClient.h>
#include <ArduinoJson.h>
#include <ESP32Servo.h>
#include "secrets.h"
#include "ThingsBoard.h"
//meengatur agar terkoneksi dengan thingsboard
#define WIFI_AP "Wokwi-GUEST"
#define WIFI_PASSWORD ""
#define TOKEN "" //diisi dengan token yang digunakan
#define THINGSBOARD_SERVER "demo.thingsboard.io"
//define pin yang digunakan
#define echoPin 2 //mendefinisikan pin 2 yang terpasang pada ultrasonik dengan nama echoPin
#define trigPin 4 //mendefinisikan pin 4 yang terpasang pada ultrasonik dengan nama trigPin
#define buzzerPin 5 //mendefinisikan pin 5 yang terpasang pada buzzer dengan nama buzzerPin
const int servoPin = 32; //mendefinisikan pin 22 yang terpasang pada servo dengan nama servoPin
int durasi;
int distance;
Servo servo; //membuat objek servo untuk mengontrol servo
WiFiClient espClient;
ThingsBoard tb(espClient);
int status = WL_IDLE_STATUS;
void setup() {
servo.attach(servoPin); //menghubungkan servo ke pin 32
Serial.begin(115200);
pinMode(trigPin, OUTPUT); //mendefinisikan trigPin sebagai output
pinMode(echoPin, INPUT); //mendefinisikan echoPin sebagai input
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2); //delay
digitalWrite(trigPin, HIGH);
delayMicroseconds(10); //delay
digitalWrite(trigPin, LOW);
int durasi = pulseIn(echoPin, HIGH);
distance = durasi * 0.034 / 2;
Serial.print("Distance : "); //menampilkan pada serial monitor
Serial.println(distance); //menampilkan data pada variabel distance
delay(100); //delay
if(distance < 3){ //jika jarak orang yang masuk kurang dari 3 meter maka servo akan terbuka dan buzzer akan berbunyi
servo.write(90); //bergerak sebesar 90 derajat
delay(15); //delay
tone(buzzerPin, 500); //bunyi buzzer dengan frekuensi 500
delay(700); //delay
tone(buzzerPin, 700); //bunyi buzzer dengan frekuensi 700
delay(700); //delay
}
else{
servo.write(0); //jika jarak melebihi 3 m maka buzzer akan kembali ke 0 derajat/tertutup
noTone(buzzerPin); //buzzer berhenti berbunyi
}
}