BLE switch interface using micro:bit with 3 tact switches or 3 Makey Makey sensors
KeyValueInt.cpp@3:d8fd4efb63cc, 2019-06-11 (annotated)
- 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?
User | Revision | Line number | New 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 |