====== Ibounce() ====== ''Ibounce()''は入力状態が指定した時間変化せずに維持された値を返す関数です。入力の短い変動や機械式スイッチのチャタリングが発生しても、安定した状態だけを返します。 この関数は''delay()''のようにプログラムを停止しないため、''loop()''で継続的に呼び出せます。 {{:ja-jp_commands:ibounce_timing.svg?900|Ibounce入力フィルタの動作}} ===== コマンド ===== ''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''を返します。 ===== 同じカテゴリの内蔵コマンド ===== * [[:ja-jp_commands:reference:idigitalread|IdigitalRead() 詳細説明を見る]] * [[:ja-jp_commands:reference:ibounceon|IbounceOn() 詳細説明を見る]] * [[:ja-jp_commands:reference:ibounceoff|IbounceOff() 詳細説明を見る]] [[:ja-jp_commands:builtin|← 内蔵コマンド一覧]]