แก้ปัญหาโค้ด ESP8266 Blynk

วานทุกคนหน่อยครับ คือผมอยากรู้ว่าจะเขียนโค้ดยังไงให้ servo ทำงานตามเวลาที่เซ็ตไว้บนแอพ blynk และทำงานยาวตาม delay ทีเซ็ตไว้บน blynk เหมือนกันตามโค้ดนี้อะครับ หรือสามารถแก้ไขเปป็นแบบอื่นได้ไหมครับ

#include <BlynkSimpleEsp8266.h>
#include <TimeLib.h>
#include <WiFiManager.h>
#include <ESP8266WiFi.h>
#include <Servo.h>

BlynkTimer timer;
WidgetLED LED1(V0);
WidgetLED LED2(V1);
Servo myservo;
int delayValue = 1000;
void checkTime()
{
  Blynk.sendInternal("rtc", "sync");
}
void setup()
{
  Serial.begin(115200);
  delay(100);
  Blynk.begin(auth, ssid, pass);
  myservo.attach(D1);
  timer.setInterval(10000L,checkTime);
}
void loop() 
{
  Blynk.run();
  timer.run();
}
BLYNK_WRITE(InternalPinRTC) 
{
  const unsigned long DEFAULT_TIME = 1357041600; // Jan 1 2013
  unsigned long blynkTime = param.asLong(); 
  
  if (blynkTime >= DEFAULT_TIME) 
  {
    setTime(blynkTime);
    Serial.println(blynkTime);
    Serial.println(String("RTC Server: ") + hour() + ":" + minute() + ":" + second());
    Serial.println(String("Day of Week: ") + weekday()); 
  }
}
BLYNK_CONNECTED()
{
  Blynk.sendInternal("rtc", "sync");
}
BLYNK_WRITE(V2)//bottom
 {
  Serial.println(param.asInt() == 1);
    {
  if (param.asInt() == 1)
      { 
      LED2.off();
      LED1.on();
      myservo.write(0);
      delay(delayValue);
      
      }
  else
      {
      LED1.off();
      LED2.on();
      myservo.write(90);
      }
  }
 }
BLYNK_WRITE(V3)//delay control
 {
  delayValue = param.asInt();
 }
BLYNK_WRITE(V4)//timer
{
  int val = param.asInt();
  Serial.println(param.asInt() == 1);
  Serial.println("timer_1_set");
  if (param.asInt())
      { 
      LED2.off();
      LED1.on();
      myservo.write(0);
      delay(delayValue);
      }
  else
      {
      LED1.off();
      LED2.on();
      myservo.write(90);
      }
}
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่