- 電圧出力は3.3V。
- GPIO2,3はプルアップ固定。その他のピンはソフトで設定可能。
- PWM用ピン
- Software PWM available on all pins
- Hardware PWM available on GPIO12, GPIO13, GPIO18, GPIO19
- SPI用ピン
- SPI0: MOSI (GPIO10); MISO (GPIO9); SCLK (GPIO11); CE0 (GPIO8),CE1 (GPIO7)
- SPI1: MOSI (GPIO20); MISO (GPIO19); SCLK (GPIO21); CE0 (GPIO18);CE1 (GPIO17); CE2 (GPIO16)
- I2C用ピン
- Data: (GPIO2); Clock (GPIO3)
- EEPROM Data: (GPIO0); EEPROM Clock (GPIO1)
- Serial用ピン
- TX (GPIO14); RX (GPIO15)
GPIOピンのピン番号を指定する方法(RPi.GPIO)
- GPIO.BCM: 機能に依存した呼び方。BCM(Broadcom SOC Channel)ピン番号。デフォルトの設定。
- GPIO.BOARD: コネクタ上に並ぶピンの物理的(Physical pin)な番号を指定する方法。物理ピン番号。
使用後
- GPIOピンを解放する。→ GPIO.cleanup()
- プルアップ/プルダウン抵抗を無効にして、GPIOピンの動作を「入力」に戻します。
- 影響を受けるのは、ソースコードの中で割り当てた、全てのGPIOピンです。
- 特定のGPIOピンだけ解放したい場合は、
Aだけ:GPIO.cleanup(A) A,B: GPIO.cleanup([A,B])
Permissions
- GPIOポートを使用する前に、ユーザーをgpioグループに登録する必要があります。
- piユーザーはデフォルトでメンバーです。
- 他のユーザーは手動で追加する。
- $ sudo usermod -a -G gpio
例:(pythonの場合)
ライブラリのインポート
import RPi.GPIO as GPIO
GPIOピンのピン番号を指定
GPIO.setmode(GPIO.BCM)
入出力設定
GPIO.setup(11, GPIO.OUT) <- GPIO11
GPIO.setup(12, GPIO.IN) <-GPIO12
プルダウン/アップを伴った入力設定
GPIO.setup(12, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(12, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
データの入力
GPIO.input(12)
データの出力
GPIO.output(11, True) / GPIO.output(11, 1) <- 出力High
GPIO.output(11, False) / GPIO.output(11, 0) <- 出力Low
簡単なプログラム(Python): GPIOの9,11番ピンを使って下図の様な回路を作り、
下記のプログラムをgpio.pyと保存し、ターミナルで python3 gpio.py と実行して下さい。LEDが1秒間隔にオンオフします。
mport RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM) # GPIO番号指定
GPIO.setup(17, GPIO.OUT) # LEDピンを出力に設定
GPIO.output(17,0) # LED消灯
for a in range(10):
GPIO.output(17, 1) # LED点灯
time.sleep(1) # 1秒待機
GPIO.output(17, 0) # LED消灯
time.sleep(1) # 1秒待機
GPIO.cleanup() # GPIOを解放