<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 メニューに戻る