Phichitpon
(Phichitpon Jaiprasert)
1
คือผมอยากทำ auto / manual ควบคุมผ่านแอพ blynk
โดยผมจะใช้ Widget timer1ตัว Button 2ตัว ตัวนึงเลือก auto ตัวนึงเลือก manual
การทำงานคือ
กดปุ่ม manual รีเลย์ทำงานทันที
กดปุ่ม auto ตั้งเวลาทำงานด้วย timer เมื่อถึงเวลาที่ตั้งไว้รีเลย์ถึงจะทำงาน
ผมรบกวนขอ Code ตัวอย่างการเขียนทีครับ
PUYIOT
(อิทธิรงค์ ทองย้อย (ปุ๋ย))
2
/**
คือผมอยากทำ auto / manual ควบคุมผ่านแอพ blynk
โดยผมจะใช้ Widget timer1ตัว Button 2ตัว ตัวนึงเลือก auto ตัวนึงเลือก manual
การทำงานคือ
กดปุ่ม manual รีเลย์ทำงานทันที
กดปุ่ม auto ตั้งเวลาทำงานด้วย timer เมื่อถึงเวลาที่ตั้งไว้รีเลย์ถึงจะทำงาน
ผมรบกวนขอ Code ตัวอย่างการเขียนทีครับ
*/
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char auth[] = "ใส่ Blynk Token";
char server1[] = "oasiskit.com";
char ssid[] = "ใส่ชื่อ WiFi";
char pass[] = "ใส่รหัสผ่าน WiFi";
int Auto_mode;
int Man_mode;
int Timer1;
#define relay1 25
#define relay2 26
BLYNK_WRITE(V1)//กดปุ่ม on off Auto mode
{
int pinValue = param.asInt();
if (pinValue == 1) {
Auto_mode = 1;
Auto_ON();
}
if (pinValue == 0) {
Auto_mode = 0;
}
}
void Auto_ON() {
Man_mode = 0;
Blynk.virtualWrite(V2, 0);
}
BLYNK_WRITE(V2)//กดปุ่ม on off Manual mode
{
int pinValue = param.asInt();
if (pinValue == 1) {
Man_mode = 1;
Man_ON();
}
if (pinValue == 0) {
Man_mode = 0;
}
}
void Man_ON() {
Auto_mode = 0;
Blynk.virtualWrite(V1, 0);
}
BLYNK_WRITE(V3)//ตั้งเวลาปิดเปิด Relay ด้วย Timer
{
int pinValue = param.asInt();
if (pinValue == 1) {
Timer1 = 1;//Timer ON
}
if (pinValue == 0) {
Timer1 = 0;//Timer OFF
}
}
void setup()
{
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
Serial.begin(115200);
Blynk.begin(auth, ssid, pass, server1, 8080);
}
void loop()
{
if (Man_mode == 1 and Auto_mode == 0) {
digitalWrite(relay1 , 1);
digitalWrite(relay2 , 1);
}
if (Man_mode == 0 and Auto_mode == 0) {
digitalWrite(relay1 , 0);
digitalWrite(relay2 , 0);
}
if (Man_mode == 0 and Auto_mode == 1 and Timer1 == 1 ) {
digitalWrite(relay1 , 1);
digitalWrite(relay2 , 1);
}
if (Man_mode == 0 and Auto_mode == 1 and Timer1 == 0 ) {
digitalWrite(relay1 , 0);
digitalWrite(relay2 , 0);
}
Blynk.run();
}
ลองประยุกต์ดูครับ ผมใช้ ESP32 Blynk server ของ eleceasy.com
ผม clone Project ให้แล้วครับ
ผมเข้าใจว่า @Phichitpon คงต้องการดูว่าเค้าเขียนในลักษณะไหน แล้วจะเอาไปทำความเข้าใจ
และต่อยอดได้ ส่วนเงื่อนไข ผมดูตามข้อมูลที่ให้มานะครับ ออกแนวประมาณนี้
1 Likes
Phichitpon
(Phichitpon Jaiprasert)
3
ขอบคุณครับมากๆครับ ผมจะลองนำไปประยุกต์ใช้กับ esp8266 ดูครับ ผลเป็นยังไงจะอัพเดทอีกทีครับ