みや
/
mbed_led_sundial
LED式日時計
Revision 0:43e0ed642bd9, committed 2016-07-31
- Comitter:
- mia_0032
- Date:
- Sun Jul 31 06:52:47 2016 +0000
- Commit message:
- ???????????????????????????
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
mbed.bld | Show annotated file Show diff for this revision Revisions of this file |
diff -r 000000000000 -r 43e0ed642bd9 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sun Jul 31 06:52:47 2016 +0000 @@ -0,0 +1,89 @@ +#include "mbed.h" + +// for debug +DigitalOut leds[] = { + DigitalOut( LED1 ), + DigitalOut( LED2 ), + DigitalOut( LED3 ), + DigitalOut( LED4 ) +}; +Serial pc( USBTX, USBRX ); + +//TA7774PG +class Stepper { +public: + Stepper(PinName in_a, PinName in_b, PinName pws) : _in_a(in_a), _in_b(in_b), _pws(pws) { + _in_a = 0; + _in_b = 0; + _pws = 0; + _next_a = true; + } + void next() { + //_pws = 0; + //wait(1.0); // for pws + if( _next_a ) { + _in_a = !_in_a; + } else { + _in_b = !_in_b; + } + //_pws = 1; + _next_a = !_next_a; + } +private: + DigitalOut _in_a; + DigitalOut _in_b; + DigitalOut _pws; + bool _next_a; +}; + +Ticker ti; +Stepper st( p23, p22, p21 ); + +// 12hour = 720min to 360 step (mode 1) +const float DAILY_INTERVAL = 120.0; +// 1hour = 60min to 720 step (mode 2) +const float HOURLY_INTERVAL = 10.0; +// for adjust (mode 3) +const float ADJUST_INTERVAL = 1.0; + +// switch mode +DigitalIn sw_a(p24, PullUp); +DigitalIn sw_b(p25, PullUp); +int mode = 1; + +int main() { + ti.attach(&st, &Stepper::next, DAILY_INTERVAL); + wait(2.0); +// for( int i=0; i < 360; i++ ){ +// leds[0] = !leds[0]; +// st.next(); +// wait(2.0); +// } + + while ( true ) { + int previous_mode = mode; + if ( sw_a && sw_b ) { + mode = 1; + } else if ( sw_a ) { + mode = 2; + } else { + mode = 3; + } + if ( previous_mode != mode ) { + ti.detach(); + switch ( mode ) { + case 1: + ti.attach(&st, &Stepper::next, DAILY_INTERVAL); + break; + case 2: + ti.attach(&st, &Stepper::next, HOURLY_INTERVAL); + break; + case 3: + ti.attach(&st, &Stepper::next, ADJUST_INTERVAL); + break; + } + } + leds[3] = !leds[3]; + wait(1.0); + } +}
diff -r 000000000000 -r 43e0ed642bd9 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Sun Jul 31 06:52:47 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/f9eeca106725 \ No newline at end of file