ปัญหาคือrelay 2 ผมใช้งานไม่ได้เลยครับ ใช้ได้เเต่ relay 1 ผมต้องทำยังไงครับ
ดูโค้ตตัวเต็มหน่อยครับ ไม่เห็นมีคำสั่งให้ Relay 2 on เลย
#define BLYNK_PRINT Serial
#define Relay1 D1
#define Relay2 D2
#define Relay3 D3
#define Relay4 D4
#define Relay5 D5
#define Relay6 D6
#define Relay7 D7
#define Relay8 D8
char auth[] = " f794abac71774461bb3c2a03b5f1c8bb ";
char ssid[] = "OPPO";
char pass[] = "1111100000";
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
WidgetLED Led(V2);
WidgetLED Led2(V3);
BLYNK_WRITE(V1) //////lock
{
if (param.asInt() == 1)
{
Blynk.virtualWrite(V1, 1);
Led.on();
Led2.off();
}
else
{
Blynk.virtualWrite(V1, 0);
digitalWrite(Relay1, LOW);
delay(700);
digitalWrite(Relay1, HIGH);
Led2.on();
Led.off();
delay(500);
Led2.off();
}
}
void setup()
{
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
}
void loop()
{
Blynk.run();
}
ผมลองเปลี่ยน จาก รีเลย์ 1 ไปเป็นรีเลย์2(ที่ผมคลุมๆไว่) รีเลย์2ไม่ทำงานครับ
BLYNK_WRITE(V1) //////lock
{
if (param.asInt() == 1)
{
Blynk.virtualWrite(V1, 1);
Led.on();
Led2.off();
}
else
{
Blynk.virtualWrite(V1, 0);
digitalWrite(Relay1, LOW);
delay(700);
digitalWrite(Relay1, HIGH);
Led2.on();
Led.off();
delay(500);
Led2.off();
}
}
ตรงไหนคือคำสั่งที่เปลี่ยนเป็น Relay 2 ครับ
ถ้าผมเปลี่ยน จาก Relay1 ไป เป็น Relay2 บอร์ดมันไม่สั่งให้รีเลย์ทำงาน เเต่ถ้าผมกลับไปเป็นรีเลย์ 1 สั่งงานได้ปกติครับ
digitalWrite(Relay1, LOW);
delay(700);
digitalWrite(Relay1, HIGH);
ใช้บอร์ดอะไรอยู่ครับ
Nodemcu ครับพี่
่โค้ดผมถูกรึป่าวครับ
#define BLYNK_PRINT Serial
#define Relay1 D1
#define Relay2 D2
#define Relay3 D3
#define Relay4 D4
#define Relay5 D5
#define Relay6 D6
#define Relay7 D7
#define Relay8 D8
char auth[] = " f794abac71774461bb3c2a03b5f1c8bb ";
char ssid[] = "OPPO";
char pass[] = "1111100000";
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
WidgetLED Led(V2);
WidgetLED Led2(V3);
BLYNK_WRITE(V1) //////lock
{
if (param.asInt() == 1)
{
Blynk.virtualWrite(V1, 1);
Led.on();
Led2.off();
}
else
{
Blynk.virtualWrite(V1, 0);
digitalWrite(Relay1, LOW);
delay(700);
digitalWrite(Relay1, HIGH);
Led2.on();
Led.off();
delay(500);
Led2.off();
}
}
BLYNK_WRITE(V4) //////Unlock
{
if (param.asInt() == 4)
{
Blynk.virtualWrite(V4, 1);
Led.on();
Led2.off();
}
else
{
Blynk.virtualWrite(V4, 0);
digitalWrite(Relay2, LOW);
delay(700);
digitalWrite(Relay2, HIGH);
Led2.on();
Led.off();
delay(500);
Led2.off();
}
}
void setup()
{
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
}
void loop()
{
Blynk.run();
}
ก่อนวางโค้ตเลือกคุมเฉพาะโค้ต แล้วกด </>
ให้ด้วยนะครับ
ขอดูหน้าเซตอัพในแอพด้วยครับ stop แอพแล้วแคบมา
เดียวผมอธิบายแบบนี้ดีกว่า ผมจะทำสมาร์ทคาร์ควบคุมรถสตาร์ท ปลดล็อกกับมือถือ ที่พี่ถามผมว่า low กับ high ใส่ทำไมเพราะว่า ปุ่มในแอพบ้างครั้งมันค้าง ผมเลยต้องให้มัน เป็น high low ใชครับมันต้องกระพริบ ป้องกัน ปุ่มมัน ค้าง ข้างบนที่ใส่ 4 ผมเข้าใจว่าสั่งปุ่ม V4 ครับ รบกวนพี่ชี้เเนะด้วยนะครับ เเล้ว ถ้าผมจะคุมRelay โดยใช้ Virtual pin ผมต้องเริ่มจากตรงไหนครับ
ขออธิบายตรงนี้ก่อนละกันนะครับ
param.asInt() == 4
คำสั่งตรงนี้ความหมายคือ เป็นการรับค่าจากปุ่มหน้าแอพ ครับ สถานะมีได้แค่ 0 กับ 1 เท่านั้น นอกนั้นมันจะไม่เข้าลูปนี้
จะเห็นว่า V1 ที่กำหนดให้สั่ง Relay 1 ทำงาน ถูกตั้งไว้เป็น 1
param.asInt() == 1
เวลากด Relay 1 มันถึงทำงานแต่ 2 ไม่ทำงานครับ
โจทย์ข้อนี้แค่เปลี่ยนจาก 4 เป็น 1 ก็น่าจะทำงานได้แล้วครับ
ส่วนเรื่องที่ถามนั้นก็คืออยากทราบว่าทำไม่ต้องใส่แบบนี้ เพื่อจะได้ทราบภาพรวมของระบบว่าทำอะไรบ้างจะได้วิเคราะห์ถูก ถ้าใส่แล้วมันแก้การค้างของปุ่มได้ก็โอเคครับ แต่ถ้ามีเวลาก็ลองตั้งกระทู้มาคุยกันเรื่อง
ทำไมปุ่ม Button มันถึงค้าง เพราะอะไร
ซึ่งผมว่ามันน่าสนใจดีนะครับ
ไม่ทราบนะครับพี่ ว่าค้างเพราอะไร เวลาค้างนานๆๆมอเตอร์เซ็นทรัลล็อคไหม้เลย
ผมเลยต้องทำวิธีนี้
ผมเเค่ต้องการ
Relay 1 กดปล่อย รีเรย์ทำงาน
Relay 2 กดปล่อย รีเรย์ทำงาน
Relay 3 กดปล่อย รีเรย์ทำงาน
Relay 4 กดติดกดดับ
Relay 5 กดติดกดดับ
ตอนนี้รีเลย์ไม่ทำงานเลยครับผมลองเเก้โปรเเกรมเเล้ว
type or paste code here
#define BLYNK_PRINT Serial
#define Relay1 D1
#define Relay2 D2
#define Relay3 D3
#define Relay4 D4
#define Relay5 D5
#define Relay6 D6
#define Relay7 D7
#define Relay8 D8
char auth[] = "";
char ssid[] = "OPPO";
char pass[] = "1111100000";
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
WidgetLED Led(V2);
WidgetLED Led2(V3);
BLYNK_WRITE(V1) //////lock
{
if (param.asInt() == 1)
{
Blynk.virtualWrite(V1, 1);
Led.on();
Led2.off();
}
else
{
Blynk.virtualWrite(V1, 0);
digitalWrite(Relay1, HIGH);
delay(700);
digitalWrite(Relay1, LOW);
Led2.on();
Led.off();
delay(500);
Led2.off();
}
}
BLYNK_WRITE(V4) //////Unlock
{
if (param.asInt() == 1)
{
Blynk.virtualWrite(V4, 1);
Led.on();
Led2.off();
}
else
{
Blynk.virtualWrite(V4, 0);
digitalWrite(Relay2, HIGH);
delay(700);
digitalWrite(Relay2, LOW);
Led2.on();
Led.off();
delay(500);
Led2.off();
}
}
void setup()
{
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
}
void loop()
{
Blynk.run();
}
แก้เพิ่มครับ
แบบนี้ทั้ง V1 และ V4 เลย
if (param.asInt() == 1)
{
Blynk.virtualWrite(V1, 1);
digitalWrite(Relay1, HIGH);
Led.on();
Led2.off();
}
ของ V4
if (param.asInt() == 1)
{
Blynk.virtualWrite(V4, 1);
digitalWrite(Relay2, HIGH);
Led.off();
Led2.on();
}
ถ้ายังไม่ได้ลองเปลี่ยน ในแอพจาก nodeMCU เป็น esp8266 ดูครับ