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を返します。
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回を推奨します。Ibounce()を使用してください。