ja-jp_commands:reference:idigitalread
文書の過去の版を表示しています。
IdigitalRead()
IdigitalRead()は入力を複数回連続で読み、すべての値が同じ場合だけ状態を更新します。HIGHとLOWが混在すると、前の安定状態を維持します。
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を返します。
使用例
void setup() { pinMode(0, INPUT); } 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/reference/idigitalread.1788796399.txt.gz · 最終更新: by 127.0.0.1
