ขอถามเรื่องคำสั่งหน่อยนะครับ

Started by LFC, September 14, 2014, 11:30:52 PM

Previous topic - Next topic

LFC

คำสั่ง t.update(); ใน Example ของ TIMER  มันหมายถึงอะไรอะครับ ผมงงมาก ขอรบกวนพี่ๆช่วยตอบหน่อยนะครับ ขอบคุณครับ

void loop(void)
{
    t.update();
}


ozuke

ผมก็งงครับ แต่ผมก็หาจนเจอะ

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 ที่คุณตั้งไว้ครับ


moneyp1000

ถ้าต้องการนับเวลาโดยที่ไม่ต้องหน่วงเวลาลองศึกษา คำสั่ง millis() ดูครับ