「インストール - RPi.GPIO」の版間の差分

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動
1行目: 1行目:
== 概要 ==
== 概要 ==
ここでは、Python3用のRPi.GPIOモジュールのインストール方法を記載する。<br>
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.")