LED式日時計

Dependencies:   mbed

Files at this revision

API Documentation at this revision

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