Ibounce()は入力状態が指定した時間変化せずに維持された値を返す関数です。入力の短い変動や機械式スイッチのチャタリングが発生しても、安定した状態だけを返します。
この関数はdelay()のようにプログラムを停止しないため、loop()で継続的に呼び出せます。
bool Ibounce(uint8_t pin, uint32_t debounceTime)
| コマンド | 引数 | 戻り値 | 動作 |
|---|---|---|---|
Ibounce(pin, debounceTime) | pin: デジタル入力ピンまたは論理入力番号debounceTime: 状態維持時間(ms) | bool | 入力状態が指定時間変わらない場合、保持された値を返します。 |
この例では、MPAINOのデジタル入力0を50 msフィルタリングして安定状態をデジタル出力64へ渡し、状態が変化したときだけシリアルモニターへ記録します。
const uint8_t INPUT_CHANNEL = 0; const uint8_t OUTPUT_CHANNEL = 64; void setup() { Serial.begin(115200); } void loop() { const bool inputState = Ibounce(INPUT_CHANNEL, 50); // 入力状態が50 ms継続したら、安定したON・OFF値を返します。 digitalWrite(OUTPUT_CHANNEL, inputState ? HIGH : LOW); static bool previousState = false; if (inputState != previousState) { previousState = inputState; Serial.println(inputState ? F("input ON") : F("input OFF")); } }
Ibounce()はONとOFFの両方向に同じ安定時間を適用します。loop()で短い周期で継続的に呼び出してください。呼び出し間隔が長いと入力状態の反映も遅くなります。debounceTimeを長くするとノイズに強くなりますが、正常入力への応答もその分遅くなります。pinは使用する製品の入力番号基準に従ってください。MPINOは製品別のArduinoデジタル入力ピン番号、対応するMPAINOは0から始まる論理入力番号を使用します。falseを返します。