patlite controller for STM32F303K8

Dependencies:   SakuraIO mbed

Files at this revision

API Documentation at this revision

Comitter:
misodengaku
Date:
Mon Apr 10 16:51:10 2017 +0000
Commit message:
init

Changed in this revision

SakuraIO.lib Show annotated file Show diff for this revision Revisions of this file
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 872ad9820a14 SakuraIO.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SakuraIO.lib	Mon Apr 10 16:51:10 2017 +0000
@@ -0,0 +1,1 @@
+https://mbed.org/teams/SAKURA-Internet/code/SakuraIO/#34a0233cdf04
diff -r 000000000000 -r 872ad9820a14 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Apr 10 16:51:10 2017 +0000
@@ -0,0 +1,92 @@
+#include "mbed.h"
+#include "SakuraIO.h"
+
+DigitalOut status_led(PB_5);
+
+DigitalOut patlite_r(PB_4);
+DigitalOut patlite_y(PB_3);
+DigitalOut patlite_g(PA_15);
+DigitalOut patlite_4(PA_12);
+DigitalOut patlite_5(PA_11);
+DigitalOut patlite_6(PA_8);
+DigitalOut patlite_7(PB_1);
+DigitalOut patlite_8(PB_0);
+
+DigitalOut patlite_map[8] = {
+    patlite_r, patlite_y, patlite_g, patlite_4,
+    patlite_5, patlite_6, patlite_7, patlite_8
+};
+
+//SPI spi(D11, D12, D13); // mosi, miso, sclk
+//DigitalOut cs(D10);
+I2C i2c(PB_7, PB_6);        // sda, scl
+uint64_t counter = 0;
+
+
+int main()
+{
+    //SakuraIO_SPI sakuraio( spi, cs );
+    SakuraIO_I2C sakuraio(i2c);
+
+    // Waiting to come online
+    for(;;) {
+        if( (sakuraio.getConnectionStatus() & 0x80) == 0x80 ) break;
+        for (int i = 0; i < 6; i++) {
+            patlite_y = !(i % 2);
+            wait_ms(100);
+        }
+        wait_ms(1000);
+    }
+
+    patlite_y = 1;
+    wait(1);
+    patlite_y = 0;
+
+
+    while(1) {
+        uint8_t avail;
+        uint8_t queued;
+
+        for(uint8_t i=0; i<queued; i++) {
+            uint8_t channel;
+            uint8_t type;
+            uint8_t values[8];
+            int64_t offset;
+            int32_t value;
+
+            // RXキューから点灯要求を取り出す
+            uint8_t ret = sakuraio.dequeueRx(&channel, &type, values, &offset);
+            value = *((int32_t *)values);
+            if(ret == 0x01) {
+                // 取り出せたらチャンネルIDを元に動作振り分け
+                // https://gist.github.com/misodengaku/17b8194dcd0c3038ea5ce7f60ef04072
+                if (channel < 7) {
+                    // tentou
+                    if (value == 1) {
+                        patlite_map[channel] = 1;
+                        sakuraio.enqueueTx((uint8_t)channel, (int32_t)1);
+                    } else {
+                        patlite_map[channel] = 0;
+                        sakuraio.enqueueTx((uint8_t)channel, (int32_t)0);
+                    }
+                }
+
+            }
+        }
+        counter++;
+        if (counter % 100 == 0) {
+            sakuraio.enqueueTx(24, counter);
+            status_led = !status_led;
+        }
+        sakuraio.getTxQueueLength(&avail, &queued);
+        if(queued >= 30) {
+            sakuraio.clearTx();
+        } else if(queued >= 5) {
+            sakuraio.send();
+        }
+
+        wait_ms(10);
+    }
+
+}
+
diff -r 000000000000 -r 872ad9820a14 mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Mon Apr 10 16:51:10 2017 +0000
@@ -0,0 +1,1 @@
+https://mbed.org/users/mbed_official/code/mbed/builds/856d2700e60b
\ No newline at end of file