みや
/
mbed_led_sundial
LED式日時計
main.cpp@0:43e0ed642bd9, 2016-07-31 (annotated)
- Committer:
- mia_0032
- Date:
- Sun Jul 31 06:52:47 2016 +0000
- Revision:
- 0:43e0ed642bd9
???????????????????????????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mia_0032 | 0:43e0ed642bd9 | 1 | #include "mbed.h" |
mia_0032 | 0:43e0ed642bd9 | 2 | |
mia_0032 | 0:43e0ed642bd9 | 3 | // for debug |
mia_0032 | 0:43e0ed642bd9 | 4 | DigitalOut leds[] = { |
mia_0032 | 0:43e0ed642bd9 | 5 | DigitalOut( LED1 ), |
mia_0032 | 0:43e0ed642bd9 | 6 | DigitalOut( LED2 ), |
mia_0032 | 0:43e0ed642bd9 | 7 | DigitalOut( LED3 ), |
mia_0032 | 0:43e0ed642bd9 | 8 | DigitalOut( LED4 ) |
mia_0032 | 0:43e0ed642bd9 | 9 | }; |
mia_0032 | 0:43e0ed642bd9 | 10 | Serial pc( USBTX, USBRX ); |
mia_0032 | 0:43e0ed642bd9 | 11 | |
mia_0032 | 0:43e0ed642bd9 | 12 | //TA7774PG |
mia_0032 | 0:43e0ed642bd9 | 13 | class Stepper { |
mia_0032 | 0:43e0ed642bd9 | 14 | public: |
mia_0032 | 0:43e0ed642bd9 | 15 | Stepper(PinName in_a, PinName in_b, PinName pws) : _in_a(in_a), _in_b(in_b), _pws(pws) { |
mia_0032 | 0:43e0ed642bd9 | 16 | _in_a = 0; |
mia_0032 | 0:43e0ed642bd9 | 17 | _in_b = 0; |
mia_0032 | 0:43e0ed642bd9 | 18 | _pws = 0; |
mia_0032 | 0:43e0ed642bd9 | 19 | _next_a = true; |
mia_0032 | 0:43e0ed642bd9 | 20 | } |
mia_0032 | 0:43e0ed642bd9 | 21 | void next() { |
mia_0032 | 0:43e0ed642bd9 | 22 | //_pws = 0; |
mia_0032 | 0:43e0ed642bd9 | 23 | //wait(1.0); // for pws |
mia_0032 | 0:43e0ed642bd9 | 24 | if( _next_a ) { |
mia_0032 | 0:43e0ed642bd9 | 25 | _in_a = !_in_a; |
mia_0032 | 0:43e0ed642bd9 | 26 | } else { |
mia_0032 | 0:43e0ed642bd9 | 27 | _in_b = !_in_b; |
mia_0032 | 0:43e0ed642bd9 | 28 | } |
mia_0032 | 0:43e0ed642bd9 | 29 | //_pws = 1; |
mia_0032 | 0:43e0ed642bd9 | 30 | _next_a = !_next_a; |
mia_0032 | 0:43e0ed642bd9 | 31 | } |
mia_0032 | 0:43e0ed642bd9 | 32 | private: |
mia_0032 | 0:43e0ed642bd9 | 33 | DigitalOut _in_a; |
mia_0032 | 0:43e0ed642bd9 | 34 | DigitalOut _in_b; |
mia_0032 | 0:43e0ed642bd9 | 35 | DigitalOut _pws; |
mia_0032 | 0:43e0ed642bd9 | 36 | bool _next_a; |
mia_0032 | 0:43e0ed642bd9 | 37 | }; |
mia_0032 | 0:43e0ed642bd9 | 38 | |
mia_0032 | 0:43e0ed642bd9 | 39 | Ticker ti; |
mia_0032 | 0:43e0ed642bd9 | 40 | Stepper st( p23, p22, p21 ); |
mia_0032 | 0:43e0ed642bd9 | 41 | |
mia_0032 | 0:43e0ed642bd9 | 42 | // 12hour = 720min to 360 step (mode 1) |
mia_0032 | 0:43e0ed642bd9 | 43 | const float DAILY_INTERVAL = 120.0; |
mia_0032 | 0:43e0ed642bd9 | 44 | // 1hour = 60min to 720 step (mode 2) |
mia_0032 | 0:43e0ed642bd9 | 45 | const float HOURLY_INTERVAL = 10.0; |
mia_0032 | 0:43e0ed642bd9 | 46 | // for adjust (mode 3) |
mia_0032 | 0:43e0ed642bd9 | 47 | const float ADJUST_INTERVAL = 1.0; |
mia_0032 | 0:43e0ed642bd9 | 48 | |
mia_0032 | 0:43e0ed642bd9 | 49 | // switch mode |
mia_0032 | 0:43e0ed642bd9 | 50 | DigitalIn sw_a(p24, PullUp); |
mia_0032 | 0:43e0ed642bd9 | 51 | DigitalIn sw_b(p25, PullUp); |
mia_0032 | 0:43e0ed642bd9 | 52 | int mode = 1; |
mia_0032 | 0:43e0ed642bd9 | 53 | |
mia_0032 | 0:43e0ed642bd9 | 54 | int main() { |
mia_0032 | 0:43e0ed642bd9 | 55 | ti.attach(&st, &Stepper::next, DAILY_INTERVAL); |
mia_0032 | 0:43e0ed642bd9 | 56 | wait(2.0); |
mia_0032 | 0:43e0ed642bd9 | 57 | // for( int i=0; i < 360; i++ ){ |
mia_0032 | 0:43e0ed642bd9 | 58 | // leds[0] = !leds[0]; |
mia_0032 | 0:43e0ed642bd9 | 59 | // st.next(); |
mia_0032 | 0:43e0ed642bd9 | 60 | // wait(2.0); |
mia_0032 | 0:43e0ed642bd9 | 61 | // } |
mia_0032 | 0:43e0ed642bd9 | 62 | |
mia_0032 | 0:43e0ed642bd9 | 63 | while ( true ) { |
mia_0032 | 0:43e0ed642bd9 | 64 | int previous_mode = mode; |
mia_0032 | 0:43e0ed642bd9 | 65 | if ( sw_a && sw_b ) { |
mia_0032 | 0:43e0ed642bd9 | 66 | mode = 1; |
mia_0032 | 0:43e0ed642bd9 | 67 | } else if ( sw_a ) { |
mia_0032 | 0:43e0ed642bd9 | 68 | mode = 2; |
mia_0032 | 0:43e0ed642bd9 | 69 | } else { |
mia_0032 | 0:43e0ed642bd9 | 70 | mode = 3; |
mia_0032 | 0:43e0ed642bd9 | 71 | } |
mia_0032 | 0:43e0ed642bd9 | 72 | if ( previous_mode != mode ) { |
mia_0032 | 0:43e0ed642bd9 | 73 | ti.detach(); |
mia_0032 | 0:43e0ed642bd9 | 74 | switch ( mode ) { |
mia_0032 | 0:43e0ed642bd9 | 75 | case 1: |
mia_0032 | 0:43e0ed642bd9 | 76 | ti.attach(&st, &Stepper::next, DAILY_INTERVAL); |
mia_0032 | 0:43e0ed642bd9 | 77 | break; |
mia_0032 | 0:43e0ed642bd9 | 78 | case 2: |
mia_0032 | 0:43e0ed642bd9 | 79 | ti.attach(&st, &Stepper::next, HOURLY_INTERVAL); |
mia_0032 | 0:43e0ed642bd9 | 80 | break; |
mia_0032 | 0:43e0ed642bd9 | 81 | case 3: |
mia_0032 | 0:43e0ed642bd9 | 82 | ti.attach(&st, &Stepper::next, ADJUST_INTERVAL); |
mia_0032 | 0:43e0ed642bd9 | 83 | break; |
mia_0032 | 0:43e0ed642bd9 | 84 | } |
mia_0032 | 0:43e0ed642bd9 | 85 | } |
mia_0032 | 0:43e0ed642bd9 | 86 | leds[3] = !leds[3]; |
mia_0032 | 0:43e0ed642bd9 | 87 | wait(1.0); |
mia_0032 | 0:43e0ed642bd9 | 88 | } |
mia_0032 | 0:43e0ed642bd9 | 89 | } |