ตอนนี้ เชื่อมได้หรือยังครับสรุปหน่อย มีข้อสงสัยก็ถามได้เลยครับ อาจจะตอบช้า บ้างเร็วบ้าง เพราะผมก็ทำงานประจำเหมือนกัน 5555
อ้อเข้าใจแล้วครับ ขอบคุณครับ
ใช่ครับไม่มีการสั่งหยุดทำงานครับ ถ้าไม่ได้กดปิดครับ มันไปเข้าคำสั่งใน void task1 จริงๆครับ
ตอนนี้อยากเพิ่ม sw ภายนอกแบบกดเปิด กดปิด ควรเพิ่งฟังก์ชั่นไว้ส่วนไหนดีครับ
ก็ใส่ไว้ใน void loop เลยครับ
เอาไปดักได้ครับ แต่มันจะเข้าไปกวนการทำงานของ task ให้ทำงานผิดจากเดิม เพราะมันเกิดจากฟังก์ชันอื่น
แนะนำให้เอาอัลกอลิทึมนี้ไปประยุกค์ใช้ครับ
เอาเฉพาะชุดนี้มาใส่ใน task
จากนั้นใน else { }
ให้เพิ่ม
if (lock == true) {
LED.off();
lock = false;
}
เข้าไป ความหมายคือ ให้มันทำงานใน if บนก่อน เมื่อทำแล้ว ค่อยมาทำข้างล่าง มันจะล๊อกเฉพาะคำสั่งที่เราต้องการ เพราะจริงๆ ถ้ามันยังไม่ on มันก็ไม่จำเป็นต้องสั่งให้มัน off
นำมาใส่ใน task นี่คือ หมายถึง void task1 ที่ผมสร้างขึ้นมาใช่ไหมครับ
ทั้งสอง task เลยครับ น่าจะ หลุดทั้งสอง task เลย วิธีใส่ก็ นับจาก if else วงนอกสุดเป็นหลัก ดู ตย ที่ผมลงให้
แบบนีหรอครับ ขอโทษนะครับ ผมงง
ปล. ในความคิดผมที่ไม่อยากให้ V9 กับ V13 ( LED ใน Blynk ) ดับหลังกดสวิชเปิด เพราะว่ากลัว relay ที่สั่งให้ทำงานพร้อมกันหลังกดให้มีค่าเป็น 1 จะดับไปด้วยนะครับ พี่เข้าใจผมนะครับ
https://scontent.fbkk12-4.fna.fbcdn.net/v/t1.15752-9/73425126_461271977825897_9109349300915142656_n.jpg?_nc_cat=103&_nc_oc=AQm5hM2fsGYG3xnofryBSdAfh305GP4rNbrZ_qh1hjx_t-MhYpHppf7_h917XxW56vQ&_nc_ht=scontent.fbkk12-4.fna&oh=b0fdf4fc14d394442a91f8ea40236935&oe=5E5DE6AB
https://scontent.fbkk12-1.fna.fbcdn.net/v/t1.15752-9/74958171_682209445635216_4520405160089878528_n.jpg?_nc_cat=101&_nc_oc=AQnL7qp0OeElRNAij1tmC7NhE0AYkCd37WZTmcmHfr-bMy2m0cnFK4-oUPjWbK8vbS0&_nc_ht=scontent.fbkk12-1.fna&oh=f38b3c3cba1cdb3922b26cbb5c68a455&oe=5E646AF0
ที่กำลังทำกันอยู่นี้ก็เป็นการไม่ให้ led ดับตอนกดเปิดไงครับ เพราะ ใน task ทั้งสองมีสถานะเป็น false อยู่มันเลยวิ่งเข้าไปที่ else{ } ซึ่ง else มีคำสั่ง ให้ led off อยู่ แล้วมันก็วิ่งผ่านคำสั่ง led off อยู่ตลอดเวลา
วิธีที่การที่จะให้ทำคือ การ lock ไม้ให้ คำสั่ง led off ทำงานตลอด ให้ครอบ if เฉพาะ คำสั่ง led off เท่านั้นครับ คำสั่งอื่นเราไม่ได้สนใจ ลองไล่ ลอจิกดูเอาให้เข้าใจก่อนว่าใส่ไปทำไม
แต่ว่ามีปัญหาใหม่ครับพี่ ขอรบกวนอีกหน่อยนะครับ
คือเมื่อ ความชื้น หรือ อุณหภูมิ สูงเกินตามที่กำหนด relay จะทำงาน และเมื่อความชื้น หรือ อุณหภูมิ ลดลงถึงตามที่กำหนด LED ยังติดต่อไปไม่ยอมหยุดครับ ต้องกด sw ปิดเอง ถึงจะดับครับ
ได้แล้วครับ ขอบคุณครับ
แก้ไขด้วยวิธีไหนแชร์ไอเดียร์ หน่อยนะครับ จะได้เคลียร์ ปัญหาขั้นสุด และปิดประเด็นกระทู้นี้ ครับ
แก้ไขตามที่พี่บอกเลยครับ เอา lock ไปใส่ครับ ได้ผลตามที่บอกเลยครับ led ไม่ดับถ้าเราไม่กดครับ
ส่วนเรื่องที่ผมบอกว่า
"แต่ว่ามีปัญหาใหม่ครับพี่ ขอรบกวนอีกหน่อยนะครับ คือเมื่อ ความชื้น หรือ อุณหภูมิ สูงเกินตามที่กำหนด relay จะทำงาน และเมื่อความชื้น หรือ อุณหภูมิ ลดลงถึงตามที่กำหนด LED ยังติดต่อไปไม่ยอมหยุดครับ ต้องกด sw ปิดเอง ถึงจะดับครับ"
เนื่องจากตอนแรกผมเอา bool lock = false; ไปไว้ในฟังก์ชั่นของ viod task1() ครับ ระบบจึงน่าจะเข้าใจผิด ผมเลยย้ายไปไว้ใน void setup() ครับ ตอนนี้ระบบทำงานได้ปกติเลยครับ ถึง ความชื้น หรือ อุณหภูมิ ตามที่กำหนด relay ก็หยุดการทำงานครับ ขอบคุณมากครับ
เยี่ยมครับ ไหวพริบดีมาก พื้นฐานดีก็คุยกันง่ายหน่อย มีความรู้หรือเทคนิกดีๆ ก็เอามาแชร์กันนะครับ






