![](/media/cache/profiles/b5627b1a37347f8a2eb37929da3ebf17.jpg.50x50_q85.jpg)
timer
main.cpp
- Committer:
- okazbb
- Date:
- 2015-12-26
- Revision:
- 0:2a4b25dd671a
- Child:
- 1:c19d6ecc34ac
File content as of revision 0:2a4b25dd671a:
#include "mbed.h" #include <string> //board Serial timerLed(PB_6, PA_10); DigitalOut led(LED1); //onboard led DigitalIn startSW(PB_8); DigitalIn goalSW(PB_9); //setting const int DRAW_DELAY = 230; const int SWITCH_DELAY = 3000; const int LED_DELAY = 1500; //local int system_time = 0; int draw_time = 0; int start_time = 0; int goal_time = 0; int led_time = 0; bool running = false; Timer timer; //https://developer.mbed.org/users/okini3939/notebook/timer_jp/ //time https://developer.mbed.org/users/okini3939/notebook/time_jp/ /* * LED表示 */ void drawLED(int ms){ int sec = ms / 1000; int time_min = sec / 60; int time_sec = sec % 60; int time_ms = ms % 1000; //TODO 0.004秒遅延する timerLed.printf("%1d.", time_min); wait(0.001); timerLed.printf("%2d.", time_sec); wait(0.001); timerLed.printf("%3d", time_ms); wait(0.001); if(running){ timerLed.printf("-1"); } else { timerLed.printf("-0"); } wait(0.001); timerLed.printf("\r"); } /* * start */ void start(){ timer.start(); running = true; } /* * goal */ void goal(){ timer.stop(); running = false; drawLED(timer.read_ms()); timer.reset(); } /* * Main */ int main() { int i = 0; wait(1); timerLed.format(8, Serial::None, 1); drawLED(0); while(1) { system_time = time(NULL); //start or goal if(startSW == 0){ if(start_time + SWITCH_DELAY <= system_time){ if(running){ goal(); } else { start(); } } } //draw led if(running && draw_time + DRAW_DELAY <= system_time){ draw_time = system_time; drawLED(timer.read_ms()); } //led signal if(led_time + 1500 <= LED_DELAY){ led_time = system_time; led = !led; i++; if(i > 9) i = 0; } } }