正規のオンライン小売業者:

AMAZON
AMAZON
amzuk

Pythonの紹介

前のレッスン- Prepare GPIO tool-WiringPi utility では、WiringPiとC言語を使用してGPIOを制御し、LEDを点灯する方法を学びました。今回のレッスンでは、別の強力なプログラミング言語であるPythonを使用して、同じ作業を行います。

PythonはLinux、Windows、Mac iOSで実行できるプログラミング言語です。Pythonについてもっと学びたい場合は、以下のウェブサイトを訪問してください Python official website.

RPi.GPIO API(ライブラリ)

C言語プログラマーにとって、最も頻繁に使用されるGPIOライブラリはWiringPiであり、前のレッスンで学びました。プログラミング言語がPythonに変更された場合、通常はRaspbian Jessie OSに付属している別のGPIOライブラリであるRPi.GPIOを使用します。

**RPi.GPIOのピン定義はWiringPiと異なります。RPi.GPIOのピン定義の詳細については、当社のレッスン2を注意深くお読みください。 Introduction Of Raspberry Pi GPIO

Raspbian Jessie 2015-05-27以降のリリースにはRPi.GPIOが事前にインストールされており、直接使用することができます。以降のチュートリアルでは、RPi.GPIOを使用して時々Raspberry Pi GPIOをプログラムします。RPi.GPIOについてもっと学びたい場合は、以下のウェブサイトを訪問してください。here.

Python RPi.GPIOライブラリがインストールされているかどうかをテストするには、ターミナルでpythonを入力してPythonを起動する必要があります(以下の画像を参照してください)。

そして、import RPi.GPIOと入力します。エラーが表示されなければ、RPi.GPIOがインストールされていることを意味します。

最後に、RPi.GPIO.VERSIONと入力します。以下のようにバージョンが表示されれば、あなたのPiは準備完了です!

Python IDLE上記のPythonのテスト例では、ターミナルコマンドを介してPythonプログラムを実行しました。このような原始的なプログラミング方法は、コードの管理やデバッグに便利ではありません。Pythonの専門家たちの努力のおかげで、Pythonのための開発および学習環境(IDLE)という進化したツールがあります。実行およびコンパイルコマンドを覚える必要はありません。それは、使用しやすくデバッグに便利なグラフィックユーザーインターフェイス(GUI)です。Raspbian Jessie PIXELオペレーティングシステムには、Python IDLEが付属しています。以下の画像のように、アプリケーションメニュー→プログラミング→Python 3(IDLE)からIDLEを開くことができます。


IDLEには、python2とpython3の2つのバージョンがあります。プログラムがpython3を介して実行された場合、python2を介して実行することはできません。新しいバージョンであるPython 3を推奨します。IDLEについて詳しくは、以下を参照してください。here

RPi.GPIOを使用するサンプルプロジェクト
次のチュートリアルでは、前のC言語のレッスンで行ったLEDの制御をPythonプログラムを使用して行うために、IDLEを使用します。 Lesson 3 .

1)実験の原理
ラズベリーパイのGPIOにLEDを接続し、その後、プログラムはこのGPIOに高または低のレベルを出力してLEDの点滅を制御します。

**上記のグラフでのB17は、物理ピン#11、wiringPiピン#0、BCMピン#17です。

注意:BはBCM(Broadcomピン番号)を意味します。BCMピン番号、物理ピン番号、wiringPiピン番号がわからない場合は、レッスン2:Raspberry Pi GPIOの紹介を確認してください。 lesson 2: Introduction Of Raspberry Pi GPIO


2)接続グラフ

 

3) Pythonプログラムの実行
方法A:IDLEでPythonコードを実行する

Raspberry Piがモニターに接続されている場合は、以下の手順を実行することをお勧めします。
a)IDLEを開き、[ファイル] -> [新しいファイル]をクリックして新しいウィンドウを開き、 the code をこのウィンドウにコピーします。または、 pythontest.py ファイルをダウンロードして、ダブルクリックして開きます。

b)「Ctrl」+「S」を押して、/home/pi(デフォルト)などのパスにプログラムを保存します。拡張子(.py または pyw)を保持し、名前をつけるときには自分の好きな名前をつけます。以下の写真のように、ファイル名は pythontest.py とします:


c) ファイルを保存した後、「F5」をクリックするか、「Run->Run Module」をクリックして、このプロジェクトを実行してください。

Method B)コマンドラインでPythonコードを実行する方法


もしRaspberry Piがモニターに接続されていない場合、またはリモートでアクセスしている場合、以下の手順でPythonプログラムを実行できます。

a) 次のコマンドを実行して/pythontest.pyコードをダウンロードしてください。
wget  http://osoyoo.com/driver/pi3_start_learning_kit_lesson_4/pythontest.py

b) 以下のコマンドを実行して、プロジェクトを実行してください。
python pythontest.py

5) Pythonコードの実行結果
コードを実行すると、最初にターミナルには「codef」というメッセージが表示され、その後LEDが点滅し、ターミナルにはLEDの状態が表示されます。


Pythonコードの説明

import RPi.GPIO as GPIO
import time
# set GPIO 0 as LED pin
LEDPIN = 17

importは、Python環境に特定のライブラリを追加するキーワードです。「import RPi.GPIO as GPIO」はRPi.GPIOライブラリを追加し、「import time」はtimeモジュールライブラリを追加します。.

Python RPi.GPIOは、BCM命名システムを使用しています。「LEDPIN = 17」とすることで、BCMピン#17を使用して信号を送信します。BCMピン#17は、物理ピン#11であり、wiringPiではGPIO.0またはピン#0の名前です。Raspberry Pi GPIOYに関する詳細情報は、参考にすることができます。GPIOレイアウトを確認するには、コマンド「gpio readall」を実行してください。

#print message at the beginning ---custom function
def print_message():
    print ('|*********************************|')
    print ('|            blink LED            |')
    print ('|   -------------------------     |')
    print ('|      LED connect to GPIO        |')
    print ('|                                 |')
    print ('|      LED will blink at 500ms    |')
    print ('|   -------------------------     |')
    print ('|                                 |')
    print ('|                          OSOYOO |')
    print ('**********************************\n')
    print ('Program is running...')
    print ('Please press Ctrl+C to end the program...')

Def means definition of a function.
Print_message is a custom (edited by yourself) function, and show print message on the terminal. To learn more information about function definition, please click here.

#setup function for some setup---custom function
def setup():
    GPIO.setwarnings(False)
    #set the gpio modes to BCM numbering
    GPIO.setmode(GPIO.BCM)
    #set LedPin's mode to output,and initial level to LOW(0V)
    GPIO.setup(LEDPIN,GPIO.OUT,initial=GPIO.LOW)

GPIO.setmode(GPIO.BCM) function sets up BCM numbering method as GPIO numbering method. GPIO.setup(LedPin,GPIO.OUT,initial=GPIO.LOW) function sets up LedPin as output mode and set low level as LedPin’s initial level.

#main function
def main():
    #print info
    print_message()
    while True:
       GPIO.output(LEDPIN,GPIO.HIGH)
       print('...LED ON\n')
       time.sleep(0.5)
       
       GPIO.output(LEDPIN,GPIO.LOW)
       print('LED OFF...\n')
       time.sleep(0.5)
       pass
    pass

メイン関数は、LEDのピンレベルを何度も変更してLEDを点滅させ、ターミナルにメッセージを送信します。

Agpiozeroを使用したPythonの代替ソリューション

上記の解決策では、基本的なGPIOライブラリを使用してPiに信号を送信します。実際には、gpiozeroライブラリを使用する方が簡単な解決策があります。次の手順を実行するだけです。

1)gpiozero Pythonライブラリがインストールされていない場合は、インストールしてください。gpiozeroは通常、最新のRaspberry Pi Pythonに含まれています。ただし、OSに含まれていない場合は、以下のコマンドを実行してインストールしてください。

sudo apt update 
sudo apt install python3-gpiozero

2)Pythonコードをダウンロードし、以下のコマンドに従って実行します:

wget http://osoyoo.com/driver/pi3_start_learning_kit_lesson_4/gpiozerotest.py
python gpiozerotest.py

gpiozerotest.pyのコードは以下の通りです

import gpiozero
import time
led = gpiozero.LED(17)
while True:
 led.on()
 print('...LED ON\n')
 time.sleep(0.5)
 led.off()
 print('...LED OFF\n')
 time.sleep(0.5)

実行結果は以前のプログラムと同じになります。