====== IdigitalRead() ====== ''IdigitalRead()''は入力を複数回連続で読み、すべての値が同じ場合だけ状態を更新します。HIGHとLOWが混在すると、前の安定状態を維持します。 {{:ja-jp_commands:reference:idigitalread.svg?900|IdigitalRead コマンドの動作フロー}} ''bool IdigitalRead(uint8_t pin, uint8_t samples)'' ===== コマンド ===== ^ コマンド ^ 引数 ^ 戻り値 ^ 動作 ^ | ''IdigitalRead(pin, samples)'' | ''uint8_t pin'' — デジタル入力ピン番号\\ ''uint8_t samples'' — 連続読み取り回数。''1''以下は1回読み取り、最大''255''回まで適用 | ''bool'' | 入力を複数回連続で読み、すべての値が同じ場合だけ状態を更新します。HIGHとLOWが混在すると、前の安定状態を維持します。 | ===== 動作方式 ===== * 入力を''samples''回連続で読み取ります。 * 読み取り値がすべて''HIGH''の場合、安定状態を''HIGH''に更新します。 * 読み取り値がすべて''LOW''の場合、安定状態を''LOW''に更新します。 * ''HIGH''と''LOW''が混在すると、短いノイズが含まれると判断して前の安定状態を維持します。 * 前の安定状態がまだなく、読み取り値が混在する場合は''LOW''を返します。 ===== 使用例 ===== MPAINO-8A8R(T)の入力''0''を読み取り、その結果を出力''64''に表示する例です。 void setup() {} void loop() { bool input = IdigitalRead(0, 5); // 入力を連続して複数回読み、すべて一致した場合のみ状態を更新します。HIGHとLOWが混在する場合は前の安定状態を保持します。 if (input) { digitalWrite(64, HIGH); } else { digitalWrite(64, LOW); } } ===== 注意事項 ===== * ''samples''が''1''以下の場合、入力を1回だけ読み取ります。 * ''samples''を大きくするほど1回の呼び出し時間が長くなります。一般的な入力ノイズ確認には''3''回または''5''回を推奨します。 * このコマンドは即時に複数回読み取る方式です。機械式スイッチのようなms単位のチャタリングを除去するには''Ibounce()''を使用してください。 ===== 同じカテゴリの内蔵コマンド ===== * [[:ja-jp_commands:ibounce|Ibounce() 詳細説明を見る]] * [[:ja-jp_commands:reference:ibounceon|IbounceOn() 詳細説明を見る]] * [[:ja-jp_commands:reference:ibounceoff|IbounceOff() 詳細説明を見る]] [[:ja-jp_commands:builtin|← 内蔵コマンド一覧]]