Skip to content

GPIO HIGH/LOW

GPIOとは

GPIO(General Purpose Input/Output:汎用入出力)は、マイコンボードにある「電気のやり取りをする端子」です。

GPIOでできること

  • デジタル出力: LEDをオンオフしたり、モーターを制御したりする
  • デジタル入力: ボタンの押下やセンサーの信号を読み取る
  • アナログ入力: 温度や光の量など、段階的に変わる値を読み取る

物理的なイメージ

マイコンボード
├── GPIO0
├── GPIO1
├── GPIO2
├── GPIO3
└── ... その他のGPIOピン

マイコンボードには複数のGPIOがあります。 プログラムで「GPIO2をON/OFFにする」というように、ピンごとに制御できます。


GPIO電圧とは

GPIOの状態は、実際には「電圧」で表現されています。

2つの基本状態

状態 意味
HIGH(高) スイッチがON、電気が流れている状態
LOW(低) スイッチがOFF、電気が流れていない状態

重要: 実際の電圧値は、マイコンの種類によって異なります。

プログラムでの表現

Arduinoやプログラミング言語では、「HIGH」と「LOW」という単語で指定します:

digitalWrite(GPIO_PIN, HIGH);  // 高い電圧を出力(つまりON)
digitalWrite(GPIO_PIN, LOW);   // 低い電圧を出力(つまりOFF)

内部的には、HIGH = 1LOW = 0という数値で扱われています。

実際の例

// LED をつける
digitalWrite(LED_PIN, HIGH);  // LED が光る

// LED を消す
digitalWrite(LED_PIN, LOW);   // LED が消える

// ボタン入力を読む
int state = digitalRead(BUTTON_PIN);
// state が HIGH なら押されている
// state が LOW なら押されていない

電圧の国際規格について

なぜ規格が必要?

マイコン同士やセンサーなど、異なるデバイスを接続するとき、 「どのくらいの電圧をHIGHと判定するのか?」を決める必要があります。

そうしないと、メーカーごとに判定が違い、動作が不安定になります。

主な規格

1. TTL規格(5V系/古い規格)

昔のマイコンボード(Arduino Unoなど)で使用されていました。

状態 電圧範囲
HIGH 2.7V以上
LOW 0.8V以下

2. CMOS規格(汎用規格)

電源電圧の何パーセント以上/以下かで判定する方式です。

状態 判定基準
HIGH 電源電圧の70%以上
LOW 電源電圧の30%以下

:電源電圧が5Vの場合

  • HIGH:3.5V以上
  • LOW:1.5V以下

3. LVCMOS規格(3.3V系/低電圧)

低電圧で動作する最新のマイコンで使用されます。

状態 電圧範囲
HIGH 2.4V以上
LOW 0.8V以下

プログラムからの利用

ここが便利

重要: マイコンのプログラムでは、電圧の値を直接指定する必要はありません!

// 単純にHIGH/LOWを指定するだけ
digitalWrite(GPIO_PIN, HIGH);  // マイコンが自動で高い電圧に変換
digitalWrite(GPIO_PIN, LOW);   // マイコンが自動で低い電圧に変換

マイコンが内部で「HIGH=高い電圧」「LOW=低い電圧」と自動変換してくれます。

規格の違いを意識する場面

異なる規格のマイコンを接続するときだけ気をつけます:

// 例:5V系のマイコンと3.3V系のマイコンを接続する場合
// 5V側の出力を3.3V側に直接つなぐと、
// 3.3V側が壊れる可能性があります。
// → 電圧変換回路が必要になります

ESP32でのGPIO

ESP32の仕様

OSECHIに搭載されているESP32は、以下の仕様でGPIOを実装しています:

電圧仕様

項目
採用規格 LVCMOS規格(3.3V系)
出力時(HIGH) 3.3V
出力時(LOW) 0V
入力判定(HIGH) 2.4V以上
入力判定(LOW) 0.8V以下

GPIO数

ESP32には30個以上のGPIOピンがあります。 すべてのピンを同時に使える訳ではなく、一部はボード内の機能に予約されています。

注意点:他のマイコンとの接続

ESP32は3.3V系ですが、古いArduinoボード(Arduino Uno)は5V系です。

// 危険:5Vのピンから出力された5Vを直接ESP32に接続
// → ESP32の GPIO が壊れる可能性あり
// → 電圧変換回路を使う必要があります

まとめ

項目 説明
GPIO マイコンの電気的な入出力端子
HIGH状態 高い電圧
LOW状態 低い電圧
国際規格 デバイス間の接続時に、電圧判定の基準を統一するため
LVCMOS ESP32が採用している規格(3.3V系)
プログラムでは HIGHLOWを指定するだけ、電圧変換は自動

プログラマーは通常、電圧の詳細を意識する必要はありません。 ただし、異なるマイコンやセンサーを接続するときは、規格の違いに注意が必要です。