BLE switch interface using micro:bit with 3 tact switches or 3 Makey Makey sensors
Diff: main.cpp
- Revision:
- 3:d8fd4efb63cc
- Parent:
- 2:8e2e6c6658be
diff -r 8e2e6c6658be -r d8fd4efb63cc main.cpp --- a/main.cpp Sat Jun 08 04:40:57 2019 +0000 +++ b/main.cpp Tue Jun 11 18:08:53 2019 +0000 @@ -7,7 +7,7 @@ // The MIT License (MIT) Copyright (c) 2019 Masatomo Kojima //--------------------------------- -#define VERSION "3SW-190608" +#define VERSION "3SW-190612" #define NO_DEBUG #include "microbit_switch_if_3sw.h" @@ -26,7 +26,6 @@ int State; // 状態遷移 char DispChar = DISP_NO_MESSAGE; // LEDに表示する文字コード char DispCharLast = 0; // 最後に表示した文字コード -bool TurnOffMode = false; // LED非表示モードのフラグ int Cnt = 0; // カウンター /** ---------- @@ -42,6 +41,13 @@ } } +/** ---------- + * @brief 一定期間後に表示をOFFにする + */ +static void turnOff() { + display.disable(); +} + //--------------------------------- // Flash Memory //--------------------------------- @@ -86,13 +92,13 @@ bool Setting_enter; // 設定値を入力 bool Setting_next; // 次の設定値に移動 -KeyValueInt kviKeyCode1("keycode1",DISP_SETTING_FREQ, 1, 1, NUM_GROUP1, true); +KeyValueInt kviKeyCode1("keycode1",DISP_SETTING_FREQ, 1, 1, NUM_GROUP_3SW, true); /** ---------- * @brief 1つのパラメータの表示と変更 * @param storage 不揮発メモリインスタンス * @param para パラメータのキーと値の組 - * @param change 変更する時 true + * @param change 変更する時 true * @param disp 今の値を表示する時 true * @return bool true : Success false : Failed */ @@ -127,7 +133,7 @@ /** ---------- * @brief よく変更するパラメータの表示と変更 * @param change true:変更する時 - * @return char 0 : Success 'e' : Failed + * @return char 0 : Success DISP_BLE_ERROR_WRITEDDATA : Failed */ static char paraSettingFreq(bool change=false) { @@ -135,13 +141,13 @@ kviKeyCode1.set(FlashGet(storage, kviKeyCode1.key, 1)); if (paraSettingOne(storage, &kviKeyCode1, change, true)) return 0; - else return 'e'; + else return DISP_BLE_ERROR_WRITEDDATA; } /** ---------- * @brief デバイス固有のパラメータの表示と変更 * @param change true:変更する時 - * @return char 0 : Success 'e' : Failed + * @return char 0 : Success DISP_BLE_ERROR_WRITEDDATA : Failed */ static char paraSettingSpec(bool change=false) { @@ -151,10 +157,10 @@ if(State == STATE_SETTING_DEVICE) { // if (paraSettingOne(storage, &kviStickDirec, true , true)) return 0; -// else return 'e'; +// else return DISP_BLE_ERROR_WRITEDDATA; } else { // if (paraSettingOne(storage, &kviStickDirec, false , false)) return 0; -// else return 'e'; +// else return DISP_BLE_ERROR_WRITEDDATA; } } //--------------------------------- @@ -304,13 +310,9 @@ MicroBitMessageBus bus; MicroBitButton buttonA(MICROBIT_PIN_BUTTON_A, MICROBIT_ID_BUTTON_A); MicroBitButton buttonB(MICROBIT_PIN_BUTTON_B, MICROBIT_ID_BUTTON_B); -//MicroBitPin P0(MICROBIT_ID_IO_P0, MICROBIT_PIN_P0, PIN_CAPABILITY_ALL); -//MicroBitPin P1(MICROBIT_ID_IO_P1, MICROBIT_PIN_P1, PIN_CAPABILITY_ALL); -//MicroBitPin P2(MICROBIT_ID_IO_P2, MICROBIT_PIN_P2, PIN_CAPABILITY_ALL); - -MicroBitButton button0(MICROBIT_PIN_P0, MICROBIT_ID_IO_P0, MICROBIT_BUTTON_ALL_EVENTS, PullUp); -MicroBitButton button1(MICROBIT_PIN_P1, MICROBIT_ID_IO_P1, MICROBIT_BUTTON_ALL_EVENTS, PullUp); -MicroBitButton button2(MICROBIT_PIN_P2, MICROBIT_ID_IO_P2, MICROBIT_BUTTON_ALL_EVENTS, PullUp); +MicroBitButton P0(MICROBIT_PIN_P0, MICROBIT_ID_IO_P0, MICROBIT_BUTTON_ALL_EVENTS, PullUp); +MicroBitButton P1(MICROBIT_PIN_P1, MICROBIT_ID_IO_P1, MICROBIT_BUTTON_ALL_EVENTS, PullUp); +MicroBitButton P2(MICROBIT_PIN_P2, MICROBIT_ID_IO_P2, MICROBIT_BUTTON_ALL_EVENTS, PullUp); /** ---------- * @brief キーコードを送信する @@ -478,8 +480,7 @@ //----- Display display.setDisplayMode(DISPLAY_MODE_BLACK_AND_WHITE); display.clear(); - Timer dispTime; // 連続表示タイマー - dispTime.start(); + Timeout dispTime; //----- Button bus.listen(MICROBIT_ID_ANY, MICROBIT_BUTTON_EVT_DOWN, onButtonDown); @@ -496,7 +497,7 @@ display.clear(); //----- Wait to connect - display.printChar('W'); + display.printChar(DISP_BLE_WAIT); while (BleMessage != BLE_CONNECTED) { wait(0.15); ble.waitForEvent(); // BLEイベントを待つ @@ -535,18 +536,13 @@ } if (DispChar != DispCharLast) { // 表示文字が変更 - TurnOffMode = false; - dispTime.reset(); display.enable(); if (DispChar) display.printChar(DispChar); else display.clear(); - } - if (!TurnOffMode) { - if (dispTime.read() > TIME_TURN_OFF) { // 長時間表示 - TurnOffMode = true; - display.disable(); - } + dispTime.detach(); + dispTime.attach(&turnOff, TIME_TURN_OFF); // 一定時間後に表示をOFF } DispCharLast = DispChar; } } +