Kazushi Yamashiro
/
KYTIMER2
timer
main.cpp
- Committer:
- okazbb
- Date:
- 2016-01-08
- Revision:
- 1:c19d6ecc34ac
- Parent:
- 0:2a4b25dd671a
File content as of revision 1:c19d6ecc34ac:
#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 = 235; const int SWITCH_DELAY = 2000; 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 system_timer; 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秒遅延する char s[9]; sprintf(s, "%01d.%02d.%03d-%1d", time_min, time_sec, time_ms, running); string str(s); for(int i = 0; i < (int)str.size(); ++i){ char ch = str[i]; timerLed.putc(str[i]); wait(0.01); } if(running){ timerLed.putc('1'); } else { timerLed.putc('0'); } wait(0.01); 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; system_timer.start(); wait(1); timerLed.format(8, Serial::None, 1); drawLED(0); while(1) { system_time = system_timer.read_ms(); //start or goal if(goalSW == 1){ if(start_time + SWITCH_DELAY <= system_time){ start_time = 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 + LED_DELAY <= system_time){ led_time = system_time; led = !led; i++; if(i > 9) i = 0; } } }