BLE switch interface using micro:bit with 3 tact switches or 3 Makey Makey sensors

Dependencies:   microbit

Committer:
masakjm
Date:
Tue Jun 11 18:08:53 2019 +0000
Revision:
3:d8fd4efb63cc
Parent:
1:9d0e2e5b5d25
Change the usage of timer.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
masakjm 1:9d0e2e5b5d25 1 //=================================
masakjm 1:9d0e2e5b5d25 2 // Class KeyValueInt
masakjm 1:9d0e2e5b5d25 3 //=================================
masakjm 1:9d0e2e5b5d25 4 // The MIT License (MIT) Copyright (c) 2018 Masatomo Kojima
masakjm 1:9d0e2e5b5d25 5 //
masakjm 1:9d0e2e5b5d25 6 // Keys and values are stored in pairs, maximum and minimum values are set,
masakjm 1:9d0e2e5b5d25 7 // and values can be easily increased or decreased.
masakjm 1:9d0e2e5b5d25 8 // キーと値をペアで記憶する。値の最大値、最小値を設定し、値の増減を容易にする。
masakjm 1:9d0e2e5b5d25 9
masakjm 1:9d0e2e5b5d25 10 #include "KeyValueInt.h"
masakjm 1:9d0e2e5b5d25 11
masakjm 1:9d0e2e5b5d25 12 /** ----------
masakjm 1:9d0e2e5b5d25 13 * @brief キーと値をペアで記憶する。値の最大値、最小値を設定し、値の増減を容易にする。
masakjm 1:9d0e2e5b5d25 14 * @param *key キー
masakjm 1:9d0e2e5b5d25 15 * @param disp LED表示の文字
masakjm 1:9d0e2e5b5d25 16 * @param data データ
masakjm 1:9d0e2e5b5d25 17 * @param min 最小値
masakjm 1:9d0e2e5b5d25 18 * @param max 最大値
masakjm 1:9d0e2e5b5d25 19 * @param rotation true:循環する false:循環しない
masakjm 1:9d0e2e5b5d25 20 */
masakjm 1:9d0e2e5b5d25 21 KeyValueInt::KeyValueInt(const char *key, char disp, int data, int min, int max, bool rotation) {
masakjm 1:9d0e2e5b5d25 22 this->key = key;
masakjm 1:9d0e2e5b5d25 23 this->disp = (disp==0 ? key[0] : disp);
masakjm 1:9d0e2e5b5d25 24 this->value = data;
masakjm 1:9d0e2e5b5d25 25 this->min = min;
masakjm 1:9d0e2e5b5d25 26 this->max = max;
masakjm 1:9d0e2e5b5d25 27 this->rotation = rotation;
masakjm 1:9d0e2e5b5d25 28 set(data);
masakjm 1:9d0e2e5b5d25 29 }
masakjm 1:9d0e2e5b5d25 30
masakjm 1:9d0e2e5b5d25 31 /** ----------
masakjm 1:9d0e2e5b5d25 32 * @brief 最大値と最小値を考慮して、正しい範囲の値を返す
masakjm 1:9d0e2e5b5d25 33 * @param data データ
masakjm 1:9d0e2e5b5d25 34 */
masakjm 1:9d0e2e5b5d25 35 int KeyValueInt::range(int data){
masakjm 1:9d0e2e5b5d25 36 if (this->rotation) {
masakjm 1:9d0e2e5b5d25 37 if (data < this->min) data = this->max;
masakjm 1:9d0e2e5b5d25 38 if (data > this->max) data = this->min;
masakjm 1:9d0e2e5b5d25 39 } else {
masakjm 1:9d0e2e5b5d25 40 if (data < this->min) data = this->min;
masakjm 1:9d0e2e5b5d25 41 if (data > this->max) data = this->max;
masakjm 1:9d0e2e5b5d25 42 }
masakjm 1:9d0e2e5b5d25 43 return data;
masakjm 1:9d0e2e5b5d25 44 }
masakjm 1:9d0e2e5b5d25 45
masakjm 1:9d0e2e5b5d25 46 /** ----------
masakjm 1:9d0e2e5b5d25 47 * @brief 値を更新する
masakjm 1:9d0e2e5b5d25 48 * @param data データ
masakjm 1:9d0e2e5b5d25 49 */
masakjm 1:9d0e2e5b5d25 50 int KeyValueInt::set(int data){
masakjm 1:9d0e2e5b5d25 51 this->value = range(data);
masakjm 1:9d0e2e5b5d25 52 return this->value;
masakjm 1:9d0e2e5b5d25 53 }
masakjm 1:9d0e2e5b5d25 54
masakjm 1:9d0e2e5b5d25 55 /** ----------
masakjm 1:9d0e2e5b5d25 56 * @brief 値を増やす
masakjm 1:9d0e2e5b5d25 57 * @param delta 変化量(1)
masakjm 1:9d0e2e5b5d25 58 */
masakjm 1:9d0e2e5b5d25 59 void KeyValueInt::inc(int delta){
masakjm 1:9d0e2e5b5d25 60 set(range(value + delta));
masakjm 1:9d0e2e5b5d25 61 }
masakjm 1:9d0e2e5b5d25 62
masakjm 1:9d0e2e5b5d25 63 /** ----------
masakjm 1:9d0e2e5b5d25 64 * @brief 値を減らす
masakjm 1:9d0e2e5b5d25 65 * @param delta 変化量(1)
masakjm 1:9d0e2e5b5d25 66 */
masakjm 1:9d0e2e5b5d25 67 void KeyValueInt::dec(int delta){
masakjm 1:9d0e2e5b5d25 68 set(range(value - delta));
masakjm 1:9d0e2e5b5d25 69 }
masakjm 1:9d0e2e5b5d25 70