#include <ESP8266WiFi.h>
#define BLYNK_PRINT Serial
#include <BlynkSimpleEsp8266.h>
#include <Servo.h>
#include <TridentTD_LineNotify.h>
#define LINE_TOKEN "daX6cquJoPYOua7AiSIqrKygw2Vi3T9FdmVRVGr8uMC"
Servo servo;
char auth[] = "fZzqDH0ZSSCNSDIITNmW5JcGf4EkXorB";
char SSID[] = "Mapraw";
char PASSWORD[] = "mapraw2543";
int servobegin = 0;
int servoend = 90;
int servotime = 1000;
BLYNK_WRITE(V0)
{
servo.write(servoend);
delay(servotime);
servo.write(servobegin);
//LINE.notify("ให้อาหารปลาเรียบร้อย");
Serial.println("notify_servo");
}
void setup(){
Serial.begin(9600);
servo.attach(2);
servo.write(servobegin);
Blynk.begin(auth, SSID, PASSWORD,"blynk.iot-cm.com", 8080);
LINE.setToken(LINE_TOKEN);
Serial.println(LINE.getVersion());
servoangle = servo.read();
Serial.println(servoangle);
}
void loop(){
Blynk.run();
delay(1);
}
ค่ะ ที่ใส่ // ไว้เพราะว่ายังไม่อยากให้รบกวนในไลน์ค่ะ เวลาเทสดูจาก Serial.println เอาค่ะ มันเเจ้ง 2 ครั้งต่อการกด 1 ครั้งค่ะ เเต่servo ทำงานปกตินะคะ
Servo มันวิ่งไปที่ของมันนะถูกแล้วถึงแม้ว่าจะมีการวิ่งมาทำงานครั้งที่ 2 ก็ตามที แต่กับการแจ้งเตือนมันไม่ใช่มันจะทำงานทุกครั้งที่โปรแกรมรันผ่านมา เนื่องจากเราตั้ง ปุ่มเป็น PUSH ซึ่งการกดหนึ่งครั้งอาจทำให้โปรแกรมวิ่งไปมากกว่า 1 ครั้ง ในกรณีนี้ คือ 2 ครั้ง ก่อนที่เราจักดปล่อยมือ
ดั้งนั้นการแก้เคสนี้คือการใส่ delay(300);
เพื่อหน่วงเวลารอจังหว่ะเราปล่อยมือนั้นเองลองดูครับ แจ้งผลด้วย
ขอโทษนะคะ ไม่ทราบว่าใส่ไว้ตรงไหนคะ
#include <ESP8266WiFi.h>
#define BLYNK_PRINT Serial
#include <BlynkSimpleEsp8266.h>
#include <Servo.h>
#include <TridentTD_LineNotify.h>
#define LINE_TOKEN "daX6cquJoPYOua7AiSIqrKygw2Vi3T9FdmVRVGr8uMC"
Servo servo;
char auth[] = "fZzqDH0ZSSCNSDIITNmW5JcGf4EkXorB";
char SSID[] = "Mapraw";
char PASSWORD[] = "mapraw2543";
int servobegin = 0;
int servoend = 90;
int servotime = 1000;
BLYNK_WRITE(V0)
{
servo.write(servoend);
delay(servotime);
servo.write(servobegin);
//LINE.notify("ให้อาหารปลาเรียบร้อย");
delay(300);
Serial.println("notify_servo");
}
void setup(){
Serial.begin(9600);
servo.attach(2);
servo.write(servobegin);
Blynk.begin(auth, SSID, PASSWORD,"blynk.iot-cm.com", 8080);
LINE.setToken(LINE_TOKEN);
Serial.println(LINE.getVersion());
servoangle = servo.read();
Serial.println(servoangle);
}
void loop(){
Blynk.run();
delay(1);
}
มันขึ้นอยู่กับว่าเรากดทิ้งไว้นานแค่ไหนครับ
เเต่เราค้างไม่นานนะคะ
ก็เหมือนกันครับ ลองกดค้างสิครับ ส่งค่าไม่หยุดแน่ๆ
วิธีการเขียนรับค่า ด้วย PUSH BUTTON ให้ศึกษาจากกระทู้นี้ครับ
และอ่านอันนี้ด้วยผมอธิบายไว้ละเอียดตอนท้ายๆ