ตัวอย่างการเขียนใช้งาน ปุ่ม Button Blynk

ทำงานอีกรอบอยู่ในloop 5วิ รึมั้ยครับ ผมยังไม่ค่อยเข้าใจนะครับ แต่ต้องกดซ้ำเปิดล่ะปิดไว ปุ่มสถานะOFF แต่รีเลย์ทำงานครับ ล่ะพอกดON ล่ะกดปิดเองปกติ ล่ะก้เป็นแบบนี้เื่อยๆเลยครับ

แคปหน้าแอพมาดูหน่อยครับ เพราะผมงงว่าแต่ละ อันถูกกำหนดเป็นอะไรบ้าง

x_time ต้องเริ่มจาก 0 เท่านั้นครับ รอบสองมันต้องเริ่มต้นนับจาก 0 แบบนี้เราหมายถึงการกำหนดให้เริ่มนับจาก 16 วิ

image

กดครั้งแรกอยู่ในloop 1วิ ครั้งต่อไปจะอยู่ในloop5วิ แต่ทำไมพอเข้าloop5วิ การทำงานของรีเลย์เป็นแบบต้องเปิดปิดไว 1 ครั้ง รีเลย์จะทำงานอยู่ในสถานะ OFF หรอครับ ผมต้องการให้ตอนที่เข้าloop5วิ ทำงานแบบกด ON แค่ครั้ง ล่ะจะทำงาน5วิ ล่ะOFF เองอัตโนมัติ แบบกดON ครั้งเดียวใช้งานได้เลยครับ

คำถามคือทำไมต้องกำหนดเป็น 16

ตอนแรกผมคิดว่าเป็นขาของรีเลย์น่ะครับ ตอนนี้ผมได้ทำการแก้ไขเป้น0แล้วครับ

int x_time = 16;

ในส่วนอันนี้ก้ต้องเป็น0ด้วยใช้มั้ยครับ ถ้าเป็ฯ0ผมจะประกาศขารีเลย์ยังไงหรอครับ

ใช่ครับ ส่วน พินก็กำหนดแยกออกไปต่างหาก

ผมไม่รู้ว่าผมเข้าใจถูกไหมน่ะครับ

void countCharger()
{
    
   if(_x_time == true){ // ถ้ามีการกดปุ่มปั๊ม 1 ครั้ง 
 x_time++; // นับไปครั้งละ 1 วิ แต่ยังจะไม่เข้า loop 5 วิ เพราะยังนับไม่ถึง
  if (x_time > 5) { //นับไปจนกว่า x_time มากกว่า 5

digitalWrite(Relay1, LOW);
Blynk.virtualWrite(V1, LOW); // คืนค่าปุ๊มกดปั๊มให้ Off
Blynk.virtualWrite(V10,chargeCounter);
_x_time = false;
}
}
   
}

BLYNK_WRITE(V1)
{
  int pinValue = param.asInt();     
if ( pinValue == 1){
     x_time = 0;
    _x_time = true;
     digitalWrite(Relay1, HIGH); 
}else{
      _x_time = false;
                    // Set the internal counter value in second
    chargeCounter = chargeTime;
    digitalWrite(Relay1, LOW);
    Blynk.virtualWrite(V10,chargeCounter);
}
}

ตอนนี้กลายเป็นกดเปิดรีเลย์ติด กดปิดรีเลย์ดับ โดยที่ไม่ใช้5วิแล้วอ่ะครับ
(ต้องขอโทษด้วยน่ะครับพอดีผมเข้าใจยากน่ะครับ :pray:)

ได้แล้วครับ ผมใจร้อนไปหน่อยน่ะครับ

1 Likes

ขอบคุณมากๆเลยครับ

โค้ตที่แก้ไขแล้วเป็นไงบ้างครับ เผื่อคิดอื่นติดเหมือนกัน ลงเป็นแนวทางไว้หน่อยครับ

1 Likes

ฝึกฝนการอ่านโค้ตเยอะๆ ครับ ลองเทสไปเรื่อยๆ จะเข้าใจเพิ่มมากขึ้น ถ้าผมลงที่ถูกให้ทีเดียวเลยก็ได้ครับ แต่เราจะไม่ได้คิดตาม และพัฒนาต่อเองไม่ได้

พอจะเปิดโค้ดตอนที่ให้มันหน่วงเวลากดค้าง 5 วินาทีได้มั้ยครับ

ตั้งกระทู้ใหม่เลยครับ ติดอะไรมาคุยกัน