พูดคุยกันเรื่องบอร์ด Arduino
ผมทำโปรเจค อ่านค่าสถานะ Air ว่าเปิดหรือปิดอยู่ แล้วตอนก่อน สองทุ่ม ให้แจ้งทาง Line Notify ว่าสถานะตอนนี้เปิดหรือปิด … และสั่งปิดสองทุ่ม ในทุก ๆ วัน … และจะสั่งเปิดมันตอนเวลา 8 โมงเช้าในทุก ๆ วัน ตอนนี้ติดปัญหาครับ คือ
1.จะ set ให้แจ้งเตือนผ่าน Line Notify ทุก ๆ ทุ่มครึ่ง . สองทุ่ม ไม่ทราบว่าจะใช้คำสั่งอะไร ครับ
2.พอมันทำร่วมกับคำสั่งอื่น ค่าเวลาที่ดึงมา พอทำร่วมกับคำสั่งอื่น มันก็จะกระโดดไป จะให้มัน run ค่าเวลาตลอดโดยที่ไม่ไปร่วมกับ คำสั่งอื่น เป็นไปได้ไหมครับ
3.ปัญหาของโค้ดนี้ พอหน่วงเวลานาน ๆ ให้มันส่งค่า ทีนี้มันจะข้ามเวลที่เรากำหนดไว้เช่น ให้จ่าย 1 ตอน 16.00 น. พอมันหน่วงนาน มันข้าม 16.00 ไป มันก็ไม่จ่าย 1 ออกมาแล้วครับ
อันนี้โค้ดครับ (ขออภัยครับ ยังมือใหม่ครับ)
#include <TridentTD_LineNotify.h>
#include <WiFi.h>
#include <HTTPClient.h>
#include "HTTPClient.h"
#include <time.h>
#include <WiFiClientSecure.h>
#define SSID "xxxx"
#define PASSWORD "xxxxxxxx"
#define LINE_TOKEN "pkZdoFEVMTveWYiB56xYSeI3H6LlotK2hamEnYYTBzH"
int timezone = 7*3600;
int dst = 0;
//#include "DHT.h"
//#define DHTPIN 13
//#define DHTTYPE DHT11
//DHT dht(DHTPIN, DHTTYPE);
/////////////// input Read Air1-Air7
const int buttonPin1 = 23;
const int buttonPin2 = 22;
const int buttonPin3 = 21;
const int buttonPin4 = 19;
/////////// output control air on/off
const int SW_Air1 = 34;
const int SW_Air2 = 35;
const int SW_Air3 = 32;
const int SW_Air4 = 33;
////////////////////////////////
void setup() {
pinMode(buttonPin1, INPUT);
pinMode(buttonPin2, INPUT);
pinMode(buttonPin3, INPUT);
pinMode(buttonPin4, INPUT);
pinMode(SW_Air1, OUTPUT);
pinMode(SW_Air2, OUTPUT);
pinMode(SW_Air3, OUTPUT);
pinMode(SW_Air4, OUTPUT);
configTime(timezone, dst, "pool.ntp.org", "time.hist.gov");
Serial.println("\nWaiting for time");
while (!time(nullptr)) {
Serial.print(",");
delay(500);
}
//dht.begin();
Serial.begin(115200); Serial.println();
Serial.println(LINE.getVersion());
WiFi.begin(SSID, PASSWORD);
Serial.printf("WiFi connecting to %s\n", SSID);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(400);
}
Serial.printf("\nWiFi connected\nIP : ");
Serial.println(WiFi.localIP());
// กำหนด Line Token
LINE.setToken(LINE_TOKEN);
LINE.notify("");
}
void loop() {
time_t now = time(nullptr);
struct tm* p_tm = localtime(&now);
Serial.print(p_tm->tm_hour);
Serial.print(":");
Serial.print(p_tm->tm_min);
Serial.print(":");
Serial.print(p_tm->tm_sec);
Serial.println("");
delay(100);
float Air1 = buttonPin1;
float Air2 = buttonPin2;
float Air3 = buttonPin3;
float Air4 = buttonPin4;
Air1 = digitalRead(buttonPin1);
Air2 = digitalRead(buttonPin2);
Air3 = digitalRead(buttonPin3);
Air4 = digitalRead(buttonPin4);
if (Air1 == HIGH || Air2 == HIGH || Air3 == HIGH || Air4 == HIGH ) {
String LineText;
String string1 = " ROOM1 Air";
String string2 = " ON ";
LineText = string1 + string2;
Serial.print("Line ");
Serial.println(LineText);
LINE.notify(LineText);
//LINE.notify("Temperature is: "+String(t)+" C");
delay(1500000L);
}
if(p_tm->tm_hour == 15 && p_tm->tm_min == 20 && p_tm->tm_sec == 00) {
digitalWrite(SW_Air1,HIGH);
digitalWrite(SW_Air2,HIGH);
digitalWrite(SW_Air3,HIGH);
digitalWrite(SW_Air4,HIGH);
delay(100);
}
if (Air1 == LOW || Air2 == LOW || Air3 == LOW || Air4) {
String LineText;
String string1 = " ROOM1 Air ";
String string2 = " OFF ";
//String string3 = " tm* p_tm";
LineText = string1 + string2;
Serial.print("Line ");
Serial.println(LineText);
LINE.notify(LineText);
//LINE.notify("Temperature is: "+String(t)+" C");
delay(1500000L);
}
if(p_tm->tm_hour == 15 && p_tm->tm_min == 40 && p_tm->tm_sec == 00) {
digitalWrite(SW_Air1,LOW);
digitalWrite(SW_Air2,LOW);
digitalWrite(SW_Air3,LOW);
digitalWrite(SW_Air4,LOW);
delay(500);
}
}