วานทุกคนหน่อยครับ คือผมอยากรู้ว่าจะเขียนโค้ดยังไงให้ 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);
}
}
แก้ปัญหาโค้ด ESP8266 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);
}
}