ผมก็งงครับ แต่ผมก็หาจนเจอะ
http://www.doctormonk.com/2012/01/arduino-timer-library.htmlเนื่องจาก Lib Timer ที่คุณว่านั้นมันเป็นตัวจำลอง Timer ขึ้นมา
จึงไม่สามารถจับเวลาด้วยตัวมันเองได้ หรือทำงานเป็น Background ได้
ดังคำสั่ง t.update(); จึงเป็นคำสั่งให้ Object Timer นั้นอัพเดทเวลาของตัวเอง
อ้างอิงจากโค้ดบรรทัดที่ 112 - 127 ของไฟล์ Timer/Timer.cpp
void Timer::update(void)
{
unsigned long now = millis();
update(now);
}
void Timer::update(unsigned long now)
{
for (int8_t i = 0; i < MAX_NUMBER_OF_EVENTS; i++)
{
if (_events[i].eventType != EVENT_NONE)
{
_events[i].update(now);
}
}
}
จากโค้ดจะเห็นว่าคำสั่ง update(); จะมีไว้สำหรับอัพเดทเวลา
เมื่อเวลานั้นมากกว่าหรือเท่ากับเวลาที่ตั้งเอาไว้โปรแกรมก็จะโดดไปทำงานตาม Event ที่เราตั้งค่าเอาไว้ครับ
"ถ้าผมลบคำสั่ง t.update() ออกหรือมาสั่งงานคำสั่งนี้ช้าหล่ะ?"
มันก็จะเกิดความผิดเพี้ยนทางเวลาของ Event ที่คุณตั้งไว้ครับ