「インストール - RPi.GPIO」の版間の差分
(→概要) |
|||
1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
RPi.GPIOモジュールは、Raspberry PiのGPIOピンを制御するための基本的なPythonモジュールである。<br> | |||
このモジュールを使用することにより、LEDの点灯、スイッチの入力検知、センサからのデータ読み取り等、GPIO (汎用入出力) ピンを通じて外部の電子部品と通信できる。<br> | |||
<br> | |||
このモジュールのメリットは、簡便な構文でありながら、デジタル入出力、PWM出力、割り込み処理等、多岐にわたる機能を提供していることである。<br> | |||
ビギナーでも扱いやすく、高度な制御も可能なバランスの取れたモジュールとなっている。<br> | |||
同時に、高度な制御も可能で、複雑なプロジェクトにも対応できる柔軟性を備えている。<br> | |||
<br> | |||
また、豊富なドキュメントやサンプルコードが提供されており、ビギナーでも学習しやすい環境が整っている。<br> | |||
<br> | |||
まず、重要な概念として、ピン番号の指定方法がある。<br> | |||
BCMモードとBOARDモードという2つの方式が存在しており、多くの開発者は理解のしやすさからBCMモードを採用している。<br> | |||
* BCMモード | |||
*: GPIO番号を使用 | |||
* BOARDモード | |||
*: 物理的なピン番号を使用する。 | |||
<br> | |||
GPIOピンの設定には、入力と出力の2つの基本モードがある。<br> | |||
* 入力モード | |||
*: スイッチの状態読み取りやセンサからのデータ取得などが可能である。 | |||
*: 入力ピンには、プルアップやプルダウン抵抗の設定もできる。 | |||
* 出力モード | |||
*: LEDの点灯や電子部品の制御等ができる。 | |||
<br> | |||
実際の制御においては、出力ピンではHIGH (オン) と LOW (オフ) の2つの状態を制御できる。<br> | |||
入力ピンでは、接続された部品の状態 (ON / OFF) を読み取ることができる。<br> | |||
<br> | |||
より高度な機能として、イベント検出機能 (割り込み検出) がある。<br> | |||
これは、ピンの状態変化を監視して、変化が発生した時に特定の処理を実行する機能である。<br> | |||
例えば、特定の物理スイッチが押下された時、特定の関数を呼び出すことが可能である。<br> | |||
<br> | |||
また、PWM (パルス幅変調) 出力にも対応しており、LEDの明るさを段階的に制御したり、モータの速度を制御したりすることも可能である。<br> | |||
<br> | |||
プログラム終了時には、使用したGPIOピンを適切に解放することが重要である。<br> | |||
これにより、次回使用時に問題が発生することを防ぐことができる。<br> | |||
<br><br> | <br><br> | ||
2024年11月12日 (火) 18:19時点における版
概要
RPi.GPIOモジュールは、Raspberry PiのGPIOピンを制御するための基本的なPythonモジュールである。
このモジュールを使用することにより、LEDの点灯、スイッチの入力検知、センサからのデータ読み取り等、GPIO (汎用入出力) ピンを通じて外部の電子部品と通信できる。
このモジュールのメリットは、簡便な構文でありながら、デジタル入出力、PWM出力、割り込み処理等、多岐にわたる機能を提供していることである。
ビギナーでも扱いやすく、高度な制御も可能なバランスの取れたモジュールとなっている。
同時に、高度な制御も可能で、複雑なプロジェクトにも対応できる柔軟性を備えている。
また、豊富なドキュメントやサンプルコードが提供されており、ビギナーでも学習しやすい環境が整っている。
まず、重要な概念として、ピン番号の指定方法がある。
BCMモードとBOARDモードという2つの方式が存在しており、多くの開発者は理解のしやすさからBCMモードを採用している。
- BCMモード
- GPIO番号を使用
- BOARDモード
- 物理的なピン番号を使用する。
GPIOピンの設定には、入力と出力の2つの基本モードがある。
- 入力モード
- スイッチの状態読み取りやセンサからのデータ取得などが可能である。
- 入力ピンには、プルアップやプルダウン抵抗の設定もできる。
- 出力モード
- LEDの点灯や電子部品の制御等ができる。
実際の制御においては、出力ピンではHIGH (オン) と LOW (オフ) の2つの状態を制御できる。
入力ピンでは、接続された部品の状態 (ON / OFF) を読み取ることができる。
より高度な機能として、イベント検出機能 (割り込み検出) がある。
これは、ピンの状態変化を監視して、変化が発生した時に特定の処理を実行する機能である。
例えば、特定の物理スイッチが押下された時、特定の関数を呼び出すことが可能である。
また、PWM (パルス幅変調) 出力にも対応しており、LEDの明るさを段階的に制御したり、モータの速度を制御したりすることも可能である。
プログラム終了時には、使用したGPIOピンを適切に解放することが重要である。
これにより、次回使用時に問題が発生することを防ぐことができる。
RPi.GPIOモジュールのインストール
まず、Raspberry Pi OSのアップデートを行う。
sudo apt update sudo apt upgrade
次に、pipのインストールを行う。
sudo apt install python3-pip
Python3のRPi.GPIOモジュールをインストールする。
sudo apt install python3-rpi.gpio # または sudo pip3 install RPi.GPIO
確認
Python 3を使用して、モジュールをインポートできることを確認する。
このとき、import RPi.GPIOコマンドは出力を返さなければ成功である。(モジュールが正常にインポートされたことを意味する)
python3
import RPi.GPIO
RPi.GPIOを使用したサンプルコード
# Import necessary modules
import RPi.GPIO as GPIO
import time
# Set up GPIO pins
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
pins = [17,18]
for pin in pins:
GPIO.setup(pin,GPIO.OUT)
GPIO.output(pin,1)
# Set variables (change these to change behaviour as desired)
runcycles = 2
ontime = 45 # minutes
offtime = 20 # minutes
# Convert run times from minutes to seconds for sleep function
ontime *= 60
offtime *= 60
# Run furnace on cycle
cycle = 0
try:
while cycle < runcycles:
cycle += 1
GPIO.output(17,0)
print("Furnace turned on for %d seconds. Cycle %d of %d." %(ontime, cycle, runcycles))
time.sleep(ontime)
GPIO.output(17,1)
if cycle == runcycles:
break
print("Furnace paused for %s seconds. %s heat cycles remaining." %(offtime, runcycles - cycle))
time.sleep(offtime)
except KeyboardInterrupt: # if Ctrl C is pressed...
GPIO.output(17,1) # shut off the boiler
print("Program stopped and furnace shut off.") # print a clean exit message
print("Heat cycles completed.")