24日間連続してカウントするタイマークラスです。クラスの実装が公開されていないので理由は不明ですが、mbed標準のTimerクラスは2148秒までしかカウントしてくれません。そのため、せめてArduinoと同等のカウントが可能なように作成しました。
Diff: TimerExtended.h
- Revision:
- 0:764aaee2b395
- Child:
- 1:2441ccdcd627
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TimerExtended.h Tue Jul 15 04:47:11 2014 +0000 @@ -0,0 +1,49 @@ +#include "mbed.h" + + +class TimerExtended +{ +private: + Timer _t; + Ticker _tk; + long milli_second; + + void update() + { + if(this->milli_second < 2147483645) + this->milli_second += this->_t.read_ms(); + this->_t.reset(); + } +public: + TimerExtended() + { + this->milli_second = 0l; + } + + // start timer + void start() + { + this->_tk.attach(this, &TimerExtended::update, 2000.0); // 2000.0 should be lower then max value of Timer obj. + this->_t.start(); + } + + // like Arduino lib. + long millis() + { + (void)this->update(); + return this->milli_second; + } + + // return time [s] in double + double read() + { + return (double)this->millis() / 1000.0; + } + + // return time [ms] + long read_ms() + { + return this->millis(); + } + +}; \ No newline at end of file