#define BLYNK_TEMPLATE_ID "TMPL6PbwqVWvG"
#define BLYNK_TEMPLATE_NAME "esp32"
#define BLYNK_AUTH_TOKEN "cGs4ZAmuJ3yHLRjCTcJoVHqll6KAPAWE"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <ESP32Servo.h>
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
int Blynk_value;
BLYNK_WRITE(V0)
{
Blynk_value = param.asInt();
// Blynk.virtualWrite(V1, value);
}
int LED_pin = 13;
int echo_pin = 12;
int trig_pin = 14;
int d; // Utrasonic Distance PulseMicros
int cm; // Centimeters = PulseMicros / 58 , Inches = PulseMicros / 148
int servo_pin = 27;
Servo servo;
int cm_check = 100; // Distance Check Sensor (Centimeters)
int servo_close = 0; // Degree Trash Close
int servo_open = 180; // Degree Trash Open
int wait_sec = 5; // Wait Time Trash Close (Second)
int var_ultrasonic = 0;
String result;
void setup() {
Serial.begin(115200);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
pinMode(LED_pin, OUTPUT);
pinMode(echo_pin, INPUT);
pinMode(trig_pin, OUTPUT);
servo.attach(servo_pin);
//servo.write(0);
} // end void setup
void loop() {
//Ultrasonic();
//Blynk_Trash();
// trash(100, 5); // trash(int cm_check, int wait_sec)
Trash();
serial_print();
} // end void loop
void Ultrasonic() {
digitalWrite(trig_pin, HIGH);
delayMicroseconds(10);
digitalWrite(trig_pin, LOW);
d = pulseIn(echo_pin, HIGH); // อ่านค่า ECHO กลับมาที่ Arduino
cm = d / 58;
if (cm > 0 && cm <= 100) {
var_ultrasonic = 1;
} else {
var_ultrasonic = 0;
}
// lcd.setCursor(0, 0);
// lcd.print(d);
// lcd.setCursor(0, 1);
// lcd.print(cm);
// lcd.setCursor(4, 1);
// lcd.print("cm");
// delay(500);
// lcd.clear();
} // end void Ultrasonic
void Blynk_Trash() {
Blynk.run();
// digitalWrite(LED_pin, Blynk_value);
if (Blynk_value == 1) {
servo.write(servo_open);
digitalWrite(LED_pin, HIGH);
} else {
servo.write(servo_close);
digitalWrite(LED_pin, LOW);
}
} // end void Blynk_Trash
void Trash() {
digitalWrite(trig_pin, HIGH);
delayMicroseconds(10);
digitalWrite(trig_pin, LOW);
d = pulseIn(echo_pin, HIGH); // อ่านค่า ECHO กลับมาที่ Arduino
cm = d / 58;
if (cm > 0 && cm <= cm_check) {
result = "Open";
//delay(1000);
servo.write(servo_open);
digitalWrite(LED_pin, HIGH);
var_ultrasonic = 1;
} else {
if (var_ultrasonic == 1) {
result = "Blink";
for (int i = 1; i <= wait_sec; i++) {
digitalWrite(LED_pin, LOW);
delay(500);
digitalWrite(LED_pin, HIGH);
delay(500);
}
var_ultrasonic = 0;
} else {
result = "Close";
//delay(1000);
servo.write(servo_close);
digitalWrite(LED_pin, LOW);
var_ultrasonic = 0;
}
}
} // end void Trash
void serial_print() {
Serial.print(d);
Serial.print("/58=" );
Serial.print(cm);
Serial.print("cm");
Serial.print(",var_us=");
Serial.print(var_ultrasonic);
Serial.print(",result=");
Serial.print(result);
Serial.print(",Blynk=");
Serial.print(Blynk_value);
Serial.println("");
}