ขอคำแนะนำพี้นฐาน หน่อยคับ คือผมใช้esp8266+swit 3 way + หลอดไฟบ้าน220vac
คือผมอยากให้ledในแอป blynk โชว์สถานะ ของหลอดไฟมีวิธีไหนบ้างคับ
ใช้ 3 ทางต่อเข้ากับ relay 220v เพื่อเอาหน้าคอนเทคไปใช้กับไฟ 3.3 V จากบอร์ด esp8266 ผ่าน R pull up-down เข้า G จากนั้น จั๊มอินพุตเข้า esp8266 เลือกมาหนึ่งพิน เพื่อรับ สถานะ อินพุต 0 หรือ 1 ถ้าเปิดไฟ เป็น 1 ถ้าเป็นเป็น 0
จากนั้นเขียนโปรแกรมรับค่า เพื่อ สางค่าแสดงบน app ครับ
มีตัวอย่างส่วนcodeไมคับ
ประมาณนี้ครับ
///// set button 1 ///
if (digitalRead(Button1) == HIGH) {
digitalWrite(Relay1, HIGH);
Blynk.virtualWrite(V37, 1);
Serial.println("Relay1 On");
}
else{
digitalWrite(Relay1, LOW);
Blynk.virtualWrite(V37, 0);
Serial.println("Relay1 Off");
}
ต้องเปลี่ยน การกำหนด pin ใหม่ด้วยนะครับเป็นแบบ Vpin
± คือบอร์ดถูกไหมคับ
ผมส่งผิดๆ เดะวายให้ดูใหม่
ต้องใช้ Relay ในวงจรด้วยนะครับ
*ถ้าผมจะใช้ code ตัวนี้ต้องส่วนไหนคับ
#define BLYNK_PRINT Serial
#define LED D1
#define SW1 D3
#define SW2 D4
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
char auth[] = “NGWmNo6ev6caxUG4t1s6_Sx3W6nWzX9J”;
char ssid[] = “tanawat”;
char pass[] = “Wat08076677433”;
BlynkTimer timer;
WidgetLED led(V37);
void timerEvent()
{
if(digitalRead(LED)==HIGH)
led.on();
else
led.off();
}
void setup()
{
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
timer.setInterval(2000L, timerEvent);
pinMode(LED,OUTPUT);
pinMode(SW1,INPUT_PULLUP);
pinMode(SW2,INPUT_PULLUP);
}
void loop()
{
Blynk.run();
timer.run(); // run BlynkTimer
if(digitalRead(SW1)==LOW)
digitalWrite(LED,HIGH);
else if (digitalRead(SW2)==LOW)
digitalWrite(LED,LOW);
}
ใช่ครับ ลองเทสดู
เดียวช่วยดูcode. ให้หน่อยคับว่าต้องแก้จุดไหน
ไม่ได้ต่อคับอะไรได้เลยคับ
แล้วทำไมต้องใช้ sw สองอันครับ
#define BLYNK_PRINT Serial
#define LED D1
#define SW1 D3
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
char auth[] = “NGWmNo6ev6caxUG4t1s6_Sx3W6nWzX9J”;
char ssid[] = “tanawat”;
char pass[] = “Wat08076677433”;
BlynkTimer timer;
WidgetLED led(V37);
void timerEvent()
{
if(digitalRead(LED)==HIGH)
led.on();
else
led.off();
}
void setup()
{
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
timer.setInterval(2000L, timerEvent);
pinMode(LED,OUTPUT);
pinMode(SW1,INPUT_PULLUP);
}
void loop()
{
Blynk.run();
timer.run(); // run BlynkTimer
if(digitalRead(SW1)==LOW)
digitalWrite(LED,HIGH);
}
ถนัดเขียนโปรแกรมแบบไม่มีปีกกา เปิด ปิด หรอครับ