ได้ครับ ๆ พอดีบางปุ่มยังไม่รู้ครับว่าทำอะไรได้บ้าง
ผมหมายถึงลักษณะทางกายภาพของปุ่นเหล่านี้ที่เราใช้นะครับ
มันคือ
PUSH
= กดค้างไว้ไฟวิ่ง พอปล่อย ไฟหยุด หรือ
SWITCH
= กดหนึ่งครั้งมันจะค้าง ไฟวิ่ง ต้องกดอีกครั้ง ไฟหยุด
ครับที่ผมต้องการสลับโหมดก็คือการ SWITCH
ครับ โดยการกดปุ่ม 1 ครั้ง คือการสลับการทำงานครับ
ระหว่าง AUTO
กับ MANUAL
ถ้าอย่างนั้นก็เข้ากรณีนี้ถูกไหม
บน Widget button สามารถตั้งได้ว่าจะเป็น SWITCH หรือ PUSH นะครับ ต้องดูด้วยว่าเราตั้งอะไรมันไว้ ค่า Define มันคือ PUSH
คือ การสลับโหมดระหว่าง AUTO
กับ MANUAL
บน Blynk ผมได้แล้วครับ ๆ โดยใช้ Switch นี่ล่ะครับ
ติดปัญหาแค่ปุ่มภายนอกครับ ที่ผมอยากสลับโหมดให้ทำงานเหมือน SWITCH
บน Blynk
ครับผมก็ถึงอยากรู้ว่า ปุ่มที่เรามีนั้นมันกด แบบไหน ?? ไฟถึง On หน้า Contack ถึงต่อกัน โค้ตมันเขียนไม่เหมือนกัน ถ้าการกดไม่เหมือนกัน
งั้นเอางี้ เขียนโค้ต LED ON/OFF โดยใช้ปุ่มนี้มาให้ผมดูหน่อยครับ ยังไม่ต้องใส่ โค้ต หลักเข้าไป
หมายถึงประเภทของปุ่มภายนอกที่ผมใช้งานอยู่รึเปล่าครับ
ผมก็หมายถึงอย่างนั้นละครับ
เป็นกดติดปล่อยดับครับ ปุ่มเล็ก ๆ ก็เหมือนกันครับ ประเภทเดียวกันหมด
เขียนรับค่าปุ่มประเภทนี้ได้อยู่ใช่ไหมครับ
ได้ครับผมก็อาศัยหลักการเดียวกับการเปิด - ปิด ไฟ เลยครับ
แต่ทีนี้ก็คงต้องเปลี่ยนเป็นการกดปุ่มเป็นการส่งค่า 1 กับ 0 แทน
ก็นั้นแหละครับโค้ตก็ประมาณนี้
int stateNow = 0;
int stateBefore = 0;
int i = 0;
int j = 0;
void setup() {
pinMode (2, INPUT);
pinMode (3, OUTPUT);
}
void loop() {
stateNow = digitalRead(2);
if (stateNow != stateBefore) {
if (stateNow == HIGH and i == 0) {
digitalWrite (3, HIGH);
j = 1;
}
else if (stateNow == LOW and j == 1) {
i = 1;
}
else if (stateNow == HIGH and i == 1) {
digitalWrite (3, LOW);
j = 0;
}
else if (stateNow == LOW and j == 0) {
i = 0;
}
}
stateBefore=stateNow;
}
ถ้าจะเอาไปใช้กับโจทย์ของเราก็
int stateNow = 0;
int stateBefore = 0;
int i = 0;
int j = 0;
void setup() {
pinMode (2, INPUT);
}
void loop() {
stateNow = digitalRead(2);
if (stateNow != stateBefore) {
if (stateNow == HIGH and i == 0) {
Blynk.virtualWrite(V0,1);
j = 1;
}
else if (stateNow == LOW and j == 1) {
i = 1;
}
else if (stateNow == HIGH and i == 1) {
Blynk.virtualWrite(V0,0);
j = 0;
}
else if (stateNow == LOW and j == 0) {
i = 0;
}
}
stateBefore = stateNow;
}
ขอบคุณมากนะครับเดี๋ยวต้องไปทดลองดูก่อนครับ ขอบคุณที่มาตอบผมมากเลยนะครับ ถ้าถาม งง ๆ หรือพิมพ์ไม่รู้เรื่อง ขอโทษด้วยนะครับ
เรื่องงงเป็นเรื่องปกติครับ เว็บนี้ชอบให้คนถามครับ ผิดถูกไม่มีใครว่า แต่ผิดแล้วได้ไอเดียร์อะไรก็เอามาแชร์กัน ครับ
อย่าลืมแจ้งผลด้วยนะครับ ว่าได้หรือยัง
ได้ครับผม ไว้จะมาบอกผลนะครับ
ตอนนี้สามารถทำงานได้แล้วนะครับสลับโหมดการทำงานได้ทั้งผ่าน Blynk
และ ปุ่มกดภายนอก
ครับ
ขอบคุณสำหรับโค้ดมาก ๆ ครับ ไม่ได้โค้ดจากที่นี่ก็ทำไม่สำเร็จแน่ๆครับ
วางโค้ตที่แก้ไขแล้ว ไว้หน่อยนะครับ เผื่อเป็นแนวทางกับคนอื่นๆ ต่อไป