ผมเขียนโค้ดแจ้งเตือนการบุกรุก ส่ง Line notify ตามรูป พอป้อนอินพุท เตือนเข้าไลน์ยาวตลอดต้องแก้อย่างไรครับ
#include <TridentTD_LineNotify.h>
#define sensor1 D1
#define sensor2 D2
#define sensor3 D3
#define sensor4 D4
#define sensor5 D5
#define sensor6 D6
#define sensor7 D7
#define sensor8 D8
#define SSID "xxxx-maintenance"
#define PASSWORD "6xxxxxxxxx8163"
#define LINE_TOKEN "F29yqWzvo8Mfvvrha"
int i;
void setup() {
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());
pinMode(sensor1,INPUT_PULLUP);
pinMode(sensor2,INPUT_PULLUP);
pinMode(sensor3,INPUT_PULLUP);
pinMode(sensor4,INPUT_PULLUP);
pinMode(sensor5,INPUT_PULLUP);
pinMode(sensor6,INPUT_PULLUP);
pinMode(sensor7,INPUT_PULLUP);
pinMode(sensor8,INPUT_PULLUP);
LINE.setToken(LINE_TOKEN);
LINE.notify("System Start Ready");
}
void loop() {
// put your main code here, to run repeatedly:
if(digitalRead(sensor1)==LOW){
LINE.notify("พบการบุกรุกจุดที่ 1");
Serial.println("พบการบุกรุกจุดที่ 1");
delay(5);
}
if(digitalRead(sensor2)==LOW){
LINE.notify("พบการบุกรุกจุดที่ 2");
Serial.println("พบการบุกรุกจุดที่ 2");
delay(5);
}
}
lock มันด้วย bool ครับให้มันวิ่งผ่าน เงื่อนไขนี้แค่ครั้งเดียว จนกว่าจะ เป็น high เพื่อเคลียร์ค่า รอกลับมาทำใหม่อีกครั้งเมื่อ เป็น low
#include <TridentTD_LineNotify.h>
#define sensor1 D1
#define sensor2 D2
#define sensor3 D3
#define sensor4 D4
#define sensor5 D5
#define sensor6 D6
#define sensor7 D7
#define sensor8 D8
#define SSID "xxxx-maintenance"
#define PASSWORD "6xxxxxxxxx8163"
#define LINE_TOKEN "F29yqWzvo8Mfvvrha"
int i;
bool lock1 = false;
bool lock2 = false;
void setup() {
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());
pinMode(sensor1,INPUT_PULLUP);
pinMode(sensor2,INPUT_PULLUP);
pinMode(sensor3,INPUT_PULLUP);
pinMode(sensor4,INPUT_PULLUP);
pinMode(sensor5,INPUT_PULLUP);
pinMode(sensor6,INPUT_PULLUP);
pinMode(sensor7,INPUT_PULLUP);
pinMode(sensor8,INPUT_PULLUP);
LINE.setToken(LINE_TOKEN);
LINE.notify("System Start Ready");
}
void loop() {
// put your main code here, to run repeatedly:
if(digitalRead(sensor1)==LOW){
if(lock1 == false){
LINE.notify("พบการบุกรุกจุดที่ 1");
Serial.println("พบการบุกรุกจุดที่ 1");
lock1 = true;
}
delay(5);
}
else
{
lock1 = false;
}
if(digitalRead(sensor2)==LOW){
if(lock2 == false){
LINE.notify("พบการบุกรุกจุดที่ 2");
Serial.println("พบการบุกรุกจุดที่ 2");
lock2 = true;
}
delay(5);
}else{
lock2 = false;
}
}
อยากให้ต่ออินพุทส่งไลน์ 1ครั้ง ถึงจะต่อไว้ตลอด และเวลาปลดอินพุท ให้ส่ง ไม่ผู้บุกรุกแล้ว ขอคำแนะนำด้วยครับ
ลองดูที่แนะนำไปครับ
ขอบคุณครับ ลองแล้วได้ผลสำเร็จครับ กดไลค์ให้ตรงไหนครับ
เลือกเป็นคำตอบที่ถูกให้ด้วยนะครับ
ผมทำเพิ่มเป็น 8 อินพุทแล้วแต่ใช้งานได้แค่ 7 D8 ไม่ทำงานครับ MCU เสียไหมครับแบบนี้
#include <TridentTD_LineNotify.h>
#define sensor1 D1
#define sensor2 D2
#define sensor3 D3
#define sensor4 D4
#define sensor5 D5
#define sensor6 D6
#define sensor7 D7
#define sensor8 D8
#define SSID "xxxxxx-maintenance"
#define PASSWORD "62668163"
#define LINE_TOKEN "F29yqWC9FZ6fvvrha"
int i;
bool lock1 = false;
bool lock2 = false;
bool lock3 = false;
bool lock4 = false;
bool lock5 = false;
bool lock6 = false;
bool lock7 = false;
bool lock8 = false;
void setup() {
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());
pinMode(sensor1,INPUT_PULLUP);
pinMode(sensor2,INPUT_PULLUP);
pinMode(sensor3,INPUT_PULLUP);
pinMode(sensor4,INPUT_PULLUP);
pinMode(sensor5,INPUT_PULLUP);
pinMode(sensor6,INPUT_PULLUP);
pinMode(sensor7,INPUT_PULLUP);
pinMode(sensor8,INPUT_PULLUP);
LINE.setToken(LINE_TOKEN);
LINE.notify("System Start Ready");
}
void loop() {
if(digitalRead(sensor1)==LOW){
if(lock1 == false){
LINE.notify("พบการบุกรุกจุดที่ 1");
Serial.println("พบการบุกรุกจุดที่ 1");
lock1 = true;
}
delay(5);
}
else
{
lock1 = false;
}
if(digitalRead(sensor2)==LOW){
if(lock2 == false){
LINE.notify("พบการบุกรุกจุดที่ 2");
Serial.println("พบการบุกรุกจุดที่ 2");
lock2 = true;
}
delay(5);
}else{
lock2 = false;
}
if(digitalRead(sensor3)==LOW){
if(lock3 == false){
LINE.notify("พบการบุกรุกจุดที่ 3");
Serial.println("พบการบุกรุกจุดที่ 3");
lock3 = true;
}
delay(5);
}
else
{
lock3 = false;
}
if(digitalRead(sensor4)==LOW){
if(lock4 == false){
LINE.notify("พบการบุกรุกจุดที่ 4");
Serial.println("พบการบุกรุกจุดที่ 4");
lock4 = true;
}
delay(5);
}else{
lock4 = false;
}
if(digitalRead(sensor5)==LOW){
if(lock5 == false){
LINE.notify("พบการบุกรุกจุดที่ 5");
Serial.println("พบการบุกรุกจุดที่ 5");
lock5 = true;
}
delay(5);
}
else
{
lock5 = false;
}
if(digitalRead(sensor6)==LOW){
if(lock6 == false){
LINE.notify("พบการบุกรุกจุดที่ 6");
Serial.println("พบการบุกรุกจุดที่ 6");
lock6 = true;
}
delay(5);
}else{
lock6 = false;
}
if(digitalRead(sensor7)==LOW){
if(lock7 == false){
LINE.notify("พบการบุกรุกจุดที่ 7");
Serial.println("พบการบุกรุกจุดที่ 7");
lock7 = true;
}
delay(5);
}
else
{
lock7 = false;
}
if(digitalRead(sensor8)==LOW){
if(lock8 == false){
LINE.notify("พบการบุกรุกจุดที่ 8");
Serial.println("พบการบุกรุกจุดที่ 8");
lock8 = true;
}
delay(5);
}else{
lock8 = false;
}
}
ดูจาก gpio แล้วมันควรจะรับ input ได้ ทุก pin นะครับ ลองสั่ง มันเป็น output ดูว่ามันตอบสนองแบบ on off ไหมเพื่อเช็คว่ามันเสียรึป่าว
ลองย้ายโปรแกรม D8 ไปรับ จาก D9,D10 ใช้งานได้ครับ แต่ D8 ไม่ได้ครับ
ลองบอร์ดอื่นได้ไหม
ไม่ได้ครับทั้ง node mcu v2. v3
สั่ง D8 on off ได้ปกติป่ะครับ
แสดงว่า d8 ไม่สามารถใช้เป็น input ได้ อาจเว้นไว้สำหรับ input ภายในก็เป็นได้ครับ
ตัวบอร์ดไม่ได้เสียอะไร
ต้องการใช้ input ถึง 8 ch เบยหรอครับ
ตามจริงจะเอาไปดูสถานะเครื่องจักครับ ต่อจากขุดความคุม คอนแทครีเลย์ ว่าเครื่องเดิน ก็ส่งข่อความ ว่าเครื่องเดิน แต่พอเครื่องหยุด คอนแทรคจาก ก็ให้ส่งข้อความว่าเครื่องหยุด ครับ ใช้ในขาอินพุทเดียวได้แต้เขียนโค้ดตรงนี้ไม่เป็นครับ มอเตอร์ ห้าตัวก็ใช้แค่ ห้าขาครับ
อ่อ จัดไปครับ สงสัยหรือติดตรงไหนก็ตั้งกระทู้ถามได้เลย ครับ