#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPL6RS3_J20n"
#define BLYNK_TEMPLATE_NAME "Test ESP32"
#define BLYNK_AUTH_TOKEN "MtdLdq15qi1F9sbrYhc5VtVWAsRcoGwh"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char auth[] = "MtdLdq15qi1F9sbrYhc5VtVWAsRcoGwh"; // ใส่ Auth Token ของ Blynk ที่ได้รับจากแอปพลิเคชัน Blynk
char ssid[] = "Wokwi-GUEST"; // ใส่ชื่อ WiFi ที่ต้องการเชื่อมต่อ
char pass[] = ""; // ใส่รหัสผ่าน WiFi ที่ต้องการเชื่อมต่อ
int pinLED = 13; // ใส่หมายเลขของพิน GPIO ที่เชื่อมกับ LED
#define TRIG_PIN 18 // ESP32 pin GIOP23 connected to Ultrasonic Sensor's TRIG pin
#define ECHO_PIN 5 // ESP32 pin GIOP22 connected to Ultrasonic Sensor's ECHO pin
#define BZ 4
float duration_us, distance_cm;
int led = 12;
int led2 = 19;
int led3 = 21;
int bt = 15;
int btcount=0;
#include <ESP32Servo.h>
Servo myservo;
void setup()
{
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
pinMode(pinLED, OUTPUT);
pinMode(TRIG_PIN, OUTPUT);
// configure the echo pin to input mode
pinMode(ECHO_PIN, INPUT);
pinMode(BZ, OUTPUT);
pinMode(led, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(bt, INPUT);
Serial.begin(115200);
Serial.println("Hello, ESP32!");
myservo.attach(14);
}
void loop()
{
Blynk.run();
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// measure duration of pulse from ECHO pin
duration_us = pulseIn(ECHO_PIN, HIGH);
// calculate the distance
distance_cm = 0.017 * duration_us;
bt = digitalRead(15);
if(bt==1)
{
btcount++;
Serial.println(btcount);
delay(500);
}
if(btcount==1)
{
digitalWrite(led, HIGH);
myservo.write(45);
delay(500);
myservo.write(0);
delay(500);
// ligt up led if distance under limit
Ultrasonic();
}
bt = digitalRead(15);
if(bt==1)
{
btcount++;
Serial.println(btcount);
delay(500);
}
if(btcount==2)
{
digitalWrite(led, LOW);
digitalWrite(led2, HIGH);
myservo.write(90);
delay(500);
myservo.write(0);
delay(500);
}
bt = digitalRead(15);
if(bt==1)
{
btcount++;
Serial.println(btcount);
delay(500);
}
if(btcount==3)
{
digitalWrite(led, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, HIGH);
myservo.write(180);
delay(500);
myservo.write(0);
delay(500);
Ultrasonic();
}
}
// ฟังก์ชั่นเปิด-ปิดไฟ LED ด้วยการกดปุ่มบนแอปพลิเคชัน Blynk
BLYNK_WRITE(V1)
{
int ledState = param.asInt();
if (ledState == 1) {
digitalWrite(pinLED, HIGH);
} else {
digitalWrite(pinLED, LOW);
}
}
void Ultrasonic(){
if (distance_cm < 50) {
digitalWrite(BZ, HIGH);
tone(BZ, 262, 500);
delay(50);
// print the value to Serial Monitor
Serial.print("distanceA: ");
delay(100);
Serial.print(distance_cm);
delay(100);
Serial.println(" cm ");
delay(100);
}
}