ปกติผมใช้delayในการหน่วงเวลาแต่ทีนี้ผมอยากทำอย่างอื่นหลังคำสั่งนี้ด้วยdelayคงไม่เหมาะ
ลองดูในตัวอย่างในBlink without Delay ผมลองใช้ดูแล้วLEDมันติด1วินาที ดับ1วินาที มันวนลูปไปเรี่อยๆ
ที่ผมต้องการเป็นแบบนี้
if สวิตซ์ = ถูกกด
{
led = ทำงาน
delay(5000); <<<<< ตรงนี้ผมอยากใช้millis()ติด5วินาทีทำได้ไหมครับ
led = ดับ
}
จบเงื่อนไข
การใช้คำสั่ง delay() จะทำให้ทุกส่วนหยุดจนกว่าจะหน่วงเวลาครบ ทำให้คำสั่งหลัง delay ไม่ทำงาน
วิธีแก้คือเช็คทุกเวลาที่ตั้งไว้ เช่นตั้งไว้ 1 วินาที ก็ใช้คำสั่ง millis() ดึงเวลาออกมาเปรียบเทียบ ถ้าถึง 1 วินาทีแล้วก็จะทำงาน
การเขียนโคดแบบนี้อาจจะยาวหน่อย จึงมีหลายคนเขียนไลบารีให้ง่ายขึ้น มีหลายไลบารี
แนะนำไลบารีตัวนี้ครับ
https://blog.protoneer.co.nz/arduino-task-scheduler/
ลองใช้ดูแล้วผมยังไม่เห็นตวามแตกต่างจากdelayเลยครับ ต้องหยุดรอเหมือนเดิม
ถ้ายังไม่ได้ ก็ต้องใช้คำสั่ง millis() ดึงเวลาแบบเขียนเอง ทำได้ตามที่ถามมาครับ