#define BLYNK_TEMPLATE_ID "TMPL6E0f4CX3A"
#define BLYNK_TEMPLATE_ID "TMPL6E0f4CX3A"
#define BLYNK_TEMPLATE_NAME "Switch"
#define BLYNK_AUTH_TOKEN "iP0oWDNfnoaNzSUshi4YbaJm91uEhTzo"
/* include Library ที่จำเป็น*/
#include <ESP32Servo.h> // เรียกใช้งานไลบรารี่สำหรับจัดการเซอโวมอเตอร์
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer; // ประกาศออบเจ็กต์ของคลาส BlynkTimer
Servo myservo; // ประกาศออบเจ็กต์ของคลาส Servo ชื่อ myservo
int servoValue; // ประกาศตัวแปรเก็บค่าที่แปลงจาก blynk
#define button_vpin V12 // ประกาศตัวแปรกำหนดค่า VirtualPIN
BLYNK_CONNECTED() { // ทำงานเมื่อเชื่อมต่อสำเร็จ
Blynk.syncVirtual(button_vpin); //สั่งให้อุปกรณ์ซิงค์ค่ากับค่าที่กำหนดในแอปพลิเคชัน
}
BLYNK_WRITE(button_vpin) {
servoValue = param.asInt(); // แปลงค่าใน param เป็นจำนวนเต็ม
if(servoValue == LOW){ // ถ้า servoValue มีเค่าเท่ากับ LOW
myservo.write(0); // ให้ Servo Motor หมุนไปที่ 0 องศา
}else{ //ถ้าไม่ใช่ หรือ Servo Motor มีเค่าเท่ากับ HIGH
myservo.write(90); // ให้ Servo Motor หมุนไปที่ 90 องศา
}
}
void setup()
{
Serial.begin(115200); // เริ่มต้นการสื่อสารซีเรียลที่ความเร็ว 115200 bps
Blynk.begin(auth, ssid, pass); // ฟังก์ชันที่ใช้เริ่มต้นการเชื่อมต่อแอปพลิเคชัน Blynk
myservo.attach(12); // กำหนดขาพิน 12 เป็นขาที่เชื่อมต่อกับเซอร์โว
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
pinMode(13, INPUT);
pinMode(2, OUTPUT);
}
void loop()
{
Blynk.run(); // เรียกใช้งานการทำงานของ Blynk
timer.run(); // รันการทำงานของ SimpleTimer
Serial.println(analogRead(13));
// ถ้า ค่า LDR ที่อ่านได้มีค่าน้อยกว่าเท่ากับ 1000 ให้หลอดไฟดับ
// ถ้า ค่า LDR ที่อ่านได้มีค่ามากกว่า 1000 ให้หลอดไฟติด
if(analogRead(13) <= 1000) {
digitalWrite(2, LOW); // คำสั่งให้หลอดไฟดับ
}else {
digitalWrite(2, HIGH); // คำสั่งให้หลอดไฟติด
}
///////////////////////////////////////////////////////////////