เลิกใช้ Delay แบบไร้สาระกันเสียทีเถอะ
แนะนำกันก่อน เรื่องนี้เริ่มต้นจากการสังเกตปัญหายอดนิยมในการพัฒนาโปรแกรมบน Arduino หรือผู้เริ่มต้นเรียนรู้การพัฒนาโปรแกรมบนภาษาอื่นๆ เช่น C หรือ Python ที่มักจะมีการใช้ฟังก์ชันในการรอเวลา (Time Delay) ไม่ว่าจะเป็นการรอเวลาเพื่อตอบกลับการร้องขอ การรอเวลาให้ระบบปลายทางพร้อมทำงาน หรือการรอให้ครบกำหนดเวลาในการทำงาน เป็นต้นซึ่งการรอเวลานั้นมีความจำเป็นในการพัฒนาโปรแกรมอยู่มาก เพราะระบบจะทำงานได้ดี มีความจำเป็นที่จะต้องทำให้อุปกรณ์ที่เชื่อมต่อกันอยู่ ทำงานประสานกันได้ดี แต่ในขณะเดียวกัน ถ้าหากในระบบมีการรอเวลากันอย่างมากมาย ก็จะกระทบกับการทำงานของระบบเช่นกัน ทั้งทำให้ระบบทำงานได้ช้า ตอบสนองช้า และความล่าช้านี้อาจจะก่อให้เกิดปัญหากับเสถียรภาพในการทำงานของระบบโดยรวมด้วย ดังนั้นแล้วการใช้ฟังก์ชันเพื่อรอเวลานั้น มีข้อควรระวังในการใช้งานอยู่ไม่น้อย แต่การที่เราจะเลี่ยงไม่ใช้ฟังก์ชันรอเวลาพวกนี้ มันไม่ได้ง่ายเลย มันจะต้องเริ่มต้นด้วยการวางแผนอย่างเป็นระเบียบ เพื่อทำให้ระบบที่เราพัฒนาสามารถทำงานร่วมกันได้ ดังนั้นในบทความนี้จะแนะนำแนวคิดในการพัฒนาโปรแกรมที่ลดการใช้ฟังก์ชันรอเวลาเหล่านี้ลงกัน เริ่มต้นด้วยไฟกระพริบ ในบทความตอนนี้จะพัฒนาไฟกระพริบด้วยโปรแกรม Arduino โดยใช้บอร์ด ESP32 DOIT-Devkit-V1 ในการพัฒนา และจะแบ่งออกเป็น 4 ส่วนดังนี้ ไฟกระพริบปกติ ที่ใช้ Delay โดยจะติด