回路の「HIGH(1)」と「LOW(0)」ってなに?

スイッチのON・OFFやLEDを点けたり消したりするプログラムを書いていると、「HIGH(1)」「LOW(0)」というのがよく出てきますね。これってどういう意味なんでしょう? プログラミングをするからといっても、ハードウェアの内容は切っても切り離せない大切な内容なのでチェックしていきたいと思います。 今回はArduino互換機で検証していきたいと思います。

あとほとんどの本に書いていない・教えてくれない入力電圧の秘密も教えちゃいます。

出力の場合「HIGH(1)」は5V(ボルト)?

こんにちは、ロボットコーダーズの政井です。今日は入力出力の電圧について見ていきたいと思います。

まずは出力の電圧を見て見ましょう。

使うプログラムはこんな感じです。7秒ごとにHIGHとLOWが切り替わるプログラムになっています。

void setup() {
  // put your setup code here, to run once:
  pinMode(1,OUTPUT);
}

void loop() {
  digitalWrite(1,HIGH);
  delay(7000);
  digitalWrite(1,LOW);
  delay(7000);
}

それでは実際の出力をテスターで見てみましょう。プログラムで「HIGH(1)」を指定した時は約5Vですね。

プログラムで「LOW(0)」を指定した時は0Vですね。

プログラムのDigitalWriteで「HIGH」にすると5V、「LOW」にすると0Vが出力されることが分かりました。これは予想通りですね。

動画でご覧になりたい方はどうぞ。

入力は5Vで「HIGH」になるの?

それでは入力されるときはどうでしょう? 次のようなプログラムを組んで、入力電圧を少しずつ変えてみることにします。

void setup() {
  // put your setup code here, to run once:
  pinMode(1,INPUT); //入力
  pinMode(12,OUTPUT);//LED出力
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(12,digitalRead(1));
}

入力電圧が変わるとLEDが点くプログラムになります。

それでは早速見てみましょう。

2V付近からLEDが点いているのが判るでしょうか。実は入力は5VでなくてもHIGH(1)になるのです。

この1と0の間の切り替わる電圧をスレッショルド電圧といいます。なかなか普通では教えてくれない内容ですが、たいせつなので覚えておくといいですよ。

まとめ

今回はピンから出力する際の「HIGH(1)」と「LOW(0)」の電圧チェックと、入力の 「HIGH(1)」と「LOW(0)」 の入力チェックをしてみましたが、いかがだったでしょうか?

出力は予想通りに「HIGH(1)」が5V、「LOW(0)」が0Vでしたね。

しかし入力は「HIGH」が5Vでない事、「LOW」も0Vでない事が分かり意外だったと思います。この入力電圧の違いでしばしば誤動作を引き起こすことがありますので、電子回路を組む時には気を付けてみてはいかがでしょう。

あわせて読みたい