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

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

ถ้าเราเลือกแบบใช้ Digital เราก็ฟิก GPIo ตามบอร์ดนั้นได้เลย ไม่ต้องใส่โค้ตอะไร

ส่วนแบบ Virtual ก็จะเป็นการฟิกแบบเอาไปใช้กับอัลกอลิทึกเราต่ออีกทีเหมาะกับการใช้งานที่มีความซับซ้อน แบบนี้ต้องใส่โค้ตตามด้านล่างจริงจะทำงานได้

ส่วนโค้ตก็ใช้แบบนี้ได้ทั้งสองแบบ เหมือนกัน กดปุ่มให้ on และ กดอีกที ก็ off

char Relay1 = 12;

void setup()
{
  Serial.begin(115200);
  pinMode(Relay1, OUTPUT);
  WiFi.begin(ssid, pass);
  Blynk.config(auth, server, port);
  Blynk.connect();         // for Blynk's cloud server if WiFi already connected
} 

BLYNK_WRITE(V1) 
{
 if (param.asInt()==1) {
 digitalWrite(Relay1, HIGH);

 }else{
 digitalWrite(Relay1, LOW);

 }
 }



void loop()
{
Blynk.run();

}

อีกเรื่องคืออย่าลืมตั้งค่าปุ่มด้วยว่าอยากให้กดติดปล่อยดับ push หรือ แบบกดติด กดดับ switch

ถ้าผมต้องการกดปุ่มONในแอพBlynkเป็นเวลา5วินาที ครบ5วินาทีล่ะOFFปิดเองอัตโนมัติ ผมควรทำไงครับ

โค้ตน่าจะประมาณนี้ครับ

...
BlynkTimer timer;         // Timer object for the DHT sensor

// This function reads the DHT 11 sensor and saved the temparature and humdity reading to V5 and V6
void sendSensor()
{
  ...
  // Please don't send more that 10 values per second.
  // 1 decimal
  Blynk.virtualWrite(V5, String(h, 1));
  Blynk.virtualWrite(V6, String(t, 1));
  // 0 decimal
  //Blynk.virtualWrite(V5, (int) h);
  //Blynk.virtualWrite(V6, (int) t);
}

// This function initiates, completed the charger relay, and counts down the charge time
void countCharger()
{
    ...
    Blynk.virtualWrite(V2, chargeCounter); // Update the counter to V2 to display the remaining time in the app  in seconds
    ...
}

// This function gets called when the charger button is turned on/off in the app
BLYNK_WRITE(V1)
{
  int pinValue = param.asInt();             // assigning incoming value from pin V1 to a variable in seconds

    ...
    chargeCounter = chargeTime;                // Set the internal counter value in second
    Blynk.virtualWrite(V2, chargeCounter);   // Update the remaining time in the app in seconds
   ...
}

void setup()
{
  ...
  // Setup up the callback functions. DHT read every 5 seconds, charger countdown ever second.
  timer.setInterval(5050L, sendSensor);
  timer.setInterval(1000L, countCharger);
}

void loop()
{
  Blynk.run();
  // Kick off the timers
  timer.run();
}

ถ้าจะให้อธิบายสักหน่อย เดียวจะมีบทความเรื่อง timer มาลงครับ ช่วงนี้ติดงานโปรเจค :joy:

ขอบคุณครับ

คือในโค้ดนี้ต้องใช้ควบกับDHTหรอครับ

BLYNK_WRITE(V1)  //คำสั่งนี้คือของปุ่มBotton ใช้มั้ยครับ
Blynk.virtualWrite(V2, chargeCounter); //คำสั่งนี้คือของTimer หรือไม่ครับ ผมเข้าใจถูกมั้ยครับ

เป็นส่วนของการแสดงผลครับ ให้ส่งค่า chargeCounter ซึ่งก็คือค่าที่นับ + ไปเรื่อยๆ ด้วยคำสั่งนี้ครับ

timer.setInterval(1000L, countCharger); คำสั่งนี้จะเข้าไปทำงานในฟังก์ชันนี้ ทุกๆ 1 วินาที

void countCharger()
{
    ...
    Blynk.virtualWrite(V2, chargeCounter); // Update the counter to V2 to display the remaining time in the app  in seconds
    ...
}

ถ้าเซ็นเซอร์ไม่มี ก็ตัดส่วนนี้ออกไปครับ

timer.setInterval(5050L, sendSensor);

ทีนี้พอเรามีเวลาในโปรแกรมแล้วเราก็เอาเวลาในส่วนนี้แหละครับมาใช้อ้างอิงในการกดปุ่มให้มัน หน่วงไปเท่าไหร่ โดนอิงกับ เวลาที่เรามีนี้

มีสอนครบทุกฟังชั่นหรือยังครับ

ส่วนตัวเคยใช้งานมาเกือบทุกฟังก์ชันแล้วครับ กำลังเขียนคู่มืออยู่ ทำงานประจำด้วยเลยไม่ค่อยมีเวลา ตอนนี้อาสัยตอบตามที่มีกระทู้ถามมาก่อนครับ