😺

Arduinoの電圧入力を検知する方法

2021/10/05に公開

ArudinoのdigitalReadで電圧を検知する場合はINPUT_PULLUPを利用することで良い感じに検知することが可能です。

まず事前にvoid setup関数内でスイッチとするピンのモードpinModeINPUT_PULLUPにしておきます。

void setup() {
  pinMode(Switch, INPUT_PULLUP);
}

その後に適当な関数を用意して、電圧を検知した際の処理を記述していきます。

Delay(今回はdelayMicroseconds関数を利用)に関しては適当に指定して問題ありません。手動の際は連続した入力検知を避けるために0.5~1秒程度を指定しておくと良いでしょう。

void InputVolt_Check() {
//電圧検知
  if (digitalRead(Switch) == LOW) {
    //入力を検知した際の処理
    delayMicroseconds(1);//手動スイッチの場合を加味して適当なDelayを挟む。
  }
  while (digitalRead(Switch) == LOW) {
    if (digitalRead(Switch) == HIGH) {
		    //入力を検知した後の処理
      break;
    }
  }
//検知後になにか処理したい場合はここに記述
}

このdigitalReadでは微弱な電圧の入力を検知できれば良いので、入力を検知するピンの手前に適当な抵抗(10Ω~)を挟むことでArudino自体を保護できます。

Discussion