Shownet2017
Diff: main.cpp
- Revision:
- 0:dba47693a3e3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Fri Jul 21 08:11:21 2017 +0000
@@ -0,0 +1,109 @@
+#include "mbed.h"
+#include "SakuraIO.h"
+
+#define SEND_INTERVAL 5 // 送信間隔 秒単位
+
+PwmOut iine_led(PB_4);
+DigitalIn iine_button(PB_3);
+DigitalOut status_led(PB_5);
+
+I2C i2c(PB_7, PB_6); // sda, scl
+SakuraIO_I2C sakuraio(i2c);
+
+uint64_t counter = 0; // 死亡検知用カウンタ
+uint32_t iine_count = 0; // 押された回数
+
+Ticker tick;
+
+void timer()
+{
+ // 1秒間隔で呼び出される
+ static int sec_count = 1;
+ __disable_irq();
+
+ if (sec_count >= SEND_INTERVAL)
+ {
+ // SEND_INTERVAL秒に1回iine_countを集計して方針
+ sec_count = 0;
+ sakuraio.clearTx();
+ sakuraio.enqueueTx(0, counter);
+ sakuraio.enqueueTx(1, iine_count);
+ sakuraio.send();
+ counter++;
+ iine_count = 0;
+ }
+ sec_count++;
+ __enable_irq();
+}
+
+int main()
+{
+ int led_counter = 0;
+ iine_button.mode(PullUp);
+
+ // 通信モジュールリンクアップ待ち
+ for (;;)
+ {
+ iine_led = 1;
+
+ for (float p = 0.0f; p < 1.0f; p += 0.01f)
+ {
+ iine_led = p;
+ wait(0.01);
+ }
+ for (float p = 1.0f; p > 0.0f; p -= 0.01f)
+ {
+ iine_led = p;
+ wait(0.01);
+ }
+ iine_led = 0;
+ if ((sakuraio.getConnectionStatus() & 0x80) == 0x80)
+ break;
+ wait(1);
+ }
+
+ // リンクアップしたよアピール
+ iine_led = 1;
+ wait(1);
+ iine_led = 0;
+ wait(1);
+ iine_led = 1;
+
+ // 1秒間隔のタイマー作成
+ tick.attach(&timer, 1);
+
+ for (;;)
+ {
+ if (iine_button == 0)
+ {
+ // ボタンが押されたらカウントアップしてから派手に点滅
+ wait(0.5);
+ while (iine_button == 0) // ボタンを放すまでブロック
+ ;
+ iine_count++; // いいね回数カウントアップ
+
+ // 以下派手に点滅
+ iine_led = 1;
+ for (int i = 0; i < 6; i++)
+ {
+ iine_led = !iine_led;
+ wait(0.1);
+ }
+ iine_led = 1;
+ }
+ else
+ {
+ // ボタンが押されていなければ適当に点滅させておく
+ if (led_counter < 100)
+ iine_led = 0;
+ else
+ iine_led = 1;
+
+ if (led_counter > 1100)
+ led_counter = 0;
+ else
+ led_counter++;
+ wait(0.1);
+ }
+ }
+}
SAKURA Internet