/********************************************
ตัวอย่างโค้ดการรับส่งข้อมูลระกว่าง Blynk กับ ESP-32
********************************************/
/* กรอกข้อมูลจาก Blynk Device Info ที่นี่ */
#define BLYNK_TEMPLATE_ID "TMPL6pidGvY_w"
#define BLYNK_TEMPLATE_NAME "myTemp"
#define BLYNK_AUTH_TOKEN "oW62PR47kVbyFj5_e4QOv4uVoIedoLi3"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char ssid[] = "Wokwi-GUEST"; // ชื่อ WiFi
char pass[] = ""; // รหัสผ่าน WiFi
BlynkTimer timer;
//ประกาศตัวแปร
int led1 = 33; //ตัวแปรเพื่อเชื่อมต่อ LED
int led2 = 25; //ตัวแปรเพื่อเชื่อมต่อ LED
int adc = 32; //ตัวแปรเพื่อเชื่อมต่อ Variable Resistor
// ฟังก์ชันนี้จะถูกเรียกทุกครั้งที่สถานะ Virtual Pin 0 (V0) เปลี่ยนแปลง เพื่อควบคุม "LED 1"
BLYNK_WRITE(V0) {
// ตั้งค่าที่รับเข้ามาจากพิน Virtual Pin 0 (V0) ไว้ที่ตัวแปรชื่อ "value"
int value = param.asInt();
// ถ้า V0 มีค่าเป็น 1 ให้ทำตามเงื่อนไขในวงเล็ปปีกกา
if (value == 1) {
digitalWrite(led1, 1);
Serial.println("LED1: ON");
} else { // ถ้า V0 มีค่าไม่เป็น 1 ให้ทำตามเงื่อนไขในวงเล็ปปีกกา
digitalWrite(led1, 0);
Serial.println("LED1: OFF");
}
}
// ฟังก์ชันนี้จะถูกเรียกทุกครั้งที่สถานะ Virtual Pin 1 (V1) เปลี่ยนแปลง เพื่อควบคุม "LED 2"
BLYNK_WRITE(V1) {
// ตั้งค่าที่รับเข้ามาจากพิน Virtual Pin 1 (V1) ไว้ที่ตัวแปรชื่อ "value"
int value = param.asInt();
if (value == 1) { // ถ้า V1 มีค่าเป็น 1 ให้ทำตามเงื่อนไขในวงเล็ปปีกกา
digitalWrite(led2, 1);
Serial.println("LED1: ON");
} else { // ถ้า V1 มีค่าไม่เป็น 1 ให้ทำตามเงื่อนไขในวงเล็ปปีกกา
digitalWrite(led2, 0);
Serial.println("LED1: OFF");
}
}
// ฟังก์ชั่นนี้จะส่ง "เวลา" การออนไลน์ของ Arduino ทุกวินาทีไปยัง Virtual Pin 2
void myTimerEvent() {
// ส่งค่าเวลาไปยัง Virtual Pin 3 (V3)
Blynk.virtualWrite(V3, millis() / 1000);
}
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
// เชื่อมต่อ Serial port
Serial.begin(115200);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
// สามารถกำหนดค่าเซิร์ฟเวอร์เพิ่มเติม ด้วยคำสั่งดังต่อไปนี้
//Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass, "blynk.cloud", 80);
//Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass, IPAddress(192,168,1,100), 8080);
// ตั้งค่าฟังก์ชันให้เรียกใช้ทุกวินาที
timer.setInterval(1000L, myTimerEvent);
}
void loop() {
Blynk.run();
timer.run();
// สามารถเพิ่มโค้ดได้
// หลีกเลี่ยงการใช้ฟังก์ชั่น delay()
int val = analogRead(adc);
Serial.println(val);
// ส่งค่าที่ตัวแปร val ไปที่ blynk cloud ที่ Virtual Pin (V2)
Blynk.virtualWrite(V2, val);
}