<Raspberry Pi-42>
Raspberry Pi ZEROと最新O.S(2017-04-10-raspbian-jessie)で、python3を使った
GPIO制御を行いました。

<raspbianバージョン>
raspbianバージョン確認方法 pi@raspberrypi:~ $ lsb_release -a

No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 8.0 (jessie)
Release:        8.0
Codename:       jessie


最新O.S(2017-04-10-raspbian-jessie)は、ここからダウンロード出来ます。

<pythonプログラム前の準備>
O.S Raspbianのインストールと諸設定をします。
マイクロSD(16G)にWin32DiskImagerソフトで2017-04-10-raspbian-jessie.imgをコピーします。
Raspberry Pi ZEROにマイクロSDを差込んで電源ONします。
デスクトップ画面左端上のラズベリーアイコンをクリックしてPreferences→Raspberry Pi Configurationで
パスワード、インターフェース、キーボード、その他を自分の環境に合わせて設定する。
ついでに、日本語入力出来るようにターミナルから次を実行する。
pi@raspberrypi:~ $ sudo apt-get install scim-anthy
終了したら再起動します。ターミナルを開いて、キーボードの半角/全角キーを押して
漢字モードになるか確認してAキーを押して「あ」が表示すればOK

デスクトップ画面左端上のラズベリーアイコンをクリック→プログラミング→Python 3(IDLE)

取り合えずLEDの点滅プログラム
-------------------------------------------------
# coding: utf-8                         #1

import RPi.GPIO as GPIO                       #2
import time                                   #3

GPIO.setmode(GPIO.BCM)                        #4

pinout1=14                                    #5

GPIO.setup(pinout1,GPIO.OUT,initial=GPIO.LOW) #6

while True:                                   #7
    GPIO.output(pinout1,GPIO.HIGH)            #8
    time.sleep(1)                             #9
    GPIO.output(pinout1,GPIO.LOW)             #10
    time.sleep(1)                             #11
-------------------------------------------------

 

<上記プログラムについて>

#1 文字コードの指定

#2 GPIOを制御するモジュールのインポート
asを付けると後ろのGPIOで指定が出来る(RPi.GPIO→GPIOと短縮出来る)

GPIO.setmode(GPIO.BCM)
----
asを付けない場合(import RPi.GPIO)
RPi.GPIO.setmode(GPIO.BCM)
--------

#3 時間モジュールのインポート

#4 GPIOポートの指定をGPIO番号にする
GPIOポートの指定方法は、ソケットのピン番号とGPIO番号があります。

以下のように対応している
----------------------------
ソケットのピン番号 GPIO番号
----------------------------
        3           GPIO2
        5           GPIO3
        7           GPIO4
        8           GPIO14
       10           GPIO15
       11           GPIO17
       12           GPIO18
    ・       ・
    ・       ・
    ・       ・
-----------------------------

GPIO.setmode(GPIO.BOARD)・・・ソケットのピン番号指定にする
GPIO.setmode(GPIO.BCM)・・・・・GPIO番号指定にする

#5 pinout1=14 pinout1変数に14を代入(GPIO14用)

#6 GPIO14を出力モードにして初期値をL(0)にする。

#7 #8から#11を繰返すためのwhile文。

#8 GPIO14をH(1)にする。

#9 1秒間停止。

#10 GPIO14をL(0)にする。

#11 1秒間停止

LED3個を順番に点滅するプログラム
-------------------------------------------------
# coding: utf-8

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)

pinout1=14
pinout2=15
pinout3=18

GPIO.setup(pinout1,GPIO.OUT,initial=GPIO.LOW)
GPIO.setup(pinout2,GPIO.OUT,initial=GPIO.LOW)
GPIO.setup(pinout3,GPIO.OUT,initial=GPIO.LOW)

while True:
    GPIO.output(pinout1,GPIO.HIGH)
    time.sleep(0.5)
    GPIO.output(pinout1,GPIO.LOW)
    GPIO.output(pinout2,GPIO.HIGH)
    time.sleep(0.5)
    GPIO.output(pinout2,GPIO.LOW)
    GPIO.output(pinout3,GPIO.HIGH)
    time.sleep(0.5)
    GPIO.output(pinout3,GPIO.LOW)
-------------------------------------------------

 


スイッチ押してLEDを点灯するプログラム
-------------------------------------------------
# coding: utf-8                                      #1

import RPi.GPIO as GPIO                              #2
import time                                          #3

GPIO.setmode(GPIO.BCM)                               #4

pinout1=14                                           #5

pinin1=16                                            #6

GPIO.setup(pinout1,GPIO.OUT,initial=GPIO.LOW)        #7

GPIO.setup(pinin1,GPIO.IN,pull_up_down=GPIO.PUD_UP)  #8

key1=1                                               #9
while True:                                          #10
    key1=GPIO.input (pinin1)                         #11
    if key1==0:                                      #12
        GPIO.output(pinout1,GPIO.HIGH)               #13
-------------------------------------------------
<上記プログラムについて>

#1 文字コードの指定

#2 GPIOを制御するモジュールのインポート

#3 時間モジュールのインポート

#4 GPIOポートの指定をGPIO番号にする

#5 pinout1=14 pinout1変数に14を代入(GPIO14用)

#6 pinin1=16 pinin1変数に16を代入(GPIO16用)

#7 GPIO14を出力モードにして初期値をL(0)にする。

#8 GPIO16を入力モードにしてプルアップにする。

#9 key1を1に初期設定

#10 #11から#13を繰返すためのwhile文。

#11 key1に入力状態(H or L)を取り込む

#12 if文でkey1が0(L)だったら次の行を処理、違う場合はスキップ

#13 pinout1をH(1)にする(LED点灯)

 


スイッチ(GPIO16)押すとLED点灯、スイッチ(GPIO20)押すとLED消灯
-------------------------------------------------
# coding: utf-8

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)

pinout1=14

pinin1=16
pinin2=20

GPIO.setup(pinout1,GPIO.OUT,initial=GPIO.LOW)

GPIO.setup(pinin1,GPIO.IN,pull_up_down=GPIO.PUD_UP)
GPIO.setup(pinin2,GPIO.IN,pull_up_down=GPIO.PUD_UP)

key1=1
key2=1
while True:
    key1=GPIO.input (pinin1)
    key2=GPIO.input (pinin2)
    if key1==0:
        GPIO.output(pinout1,GPIO.HIGH)
    if key2==0:
        GPIO.output(pinout1,GPIO.LOW)
-------------------------------------------------

 


Raspberry Pi-43に続く・・・


Raspberry メニューに戻る