狠狠撸

狠狠撸Share a Scribd company logo
やってみよう!
Pi-Stopで学ぶ
Raspberry Pi+Pythonプログラミング
2019年1月26日版
Pi-Stopとは
? Raspberry PiのGPIOピンに挿すだけで簡
単に使える信号機型LED
? ScratchやPythonから簡単にLEDの点灯?
消灯が行えます
? パラメータ変更でプログラムの動作原理を
学べます
2
Pi-Stopの詳細は資料の最後を参照
Pythonでプログラミング
? Raspberry Piで用意されているPython用の
統合開発環境「IDLE」を使用します
1. 画面左上のラズベリーメニューを開きます
2. 「プログラミング」から「Python 3(IDLE)」を
選びます
3. IDLEが起動します
3
やってみよう!
IDLEの起動
4
① ラズベリー
メニューを開
きます
② 「Python 3 (IDLE)」
を選択して起動します
Pythonプログラムの実行方法
1. FileメニューからNew Fileを選びます
2. エディタウインドウが開きます
3. エディタにプログラムを書きます
4. RunメニューからRun Moduleを選択して、記
述したプログラムを実行します
5. ファイル保存ダイアログで保存します
– 初めての実行の場合にはファイル名を指定します
– ファイル名は自分の名前など、他の人と同じにな
らないようなファイル名をつけてください
5
やってみよう!
1. FileメニューからNew Fileを選択
6
Fileメニューから
New 贵颈濒别を选択します
3. エディタに書くプログラム
from gpiozero import LED
green = LED(14)
green.blink()
7
4. Run Moduleを選択して実行
8
Runメニューから
Run 惭辞诲耻濒别を选択します
5. 修正したプログラムを保存
9
プログラムを修正すると実行前に保存が必要です
OKボタンをクリックします
5. ファイル名を指定します
10
ファイル名を入力してSaveボタンをクリックします
作るプログラム
少しずつ改良を加えながら進めます
1. 緑LEDを点滅
2. 全部のLEDを点滅
3. 全部のLEDを点灯
4. 全部のLEDを点灯?消灯
5. 点灯?消灯をくりかえし
6. 信号機の動作
11
プログラム1:緑LEDを点滅
from gpiozero import LED
green = LED(14)
green.blink()
12
プログラム1の説明
? gpiozeroライブラリからLEDクラスを読み込
んでいます
– gpiozeroライブラリをimportするとRaspberry Pi
のGPIOを簡単に使えます
– LEDクラスはLEDを光らせます
? LEDが接続されているGPIOピン番号を指
定してLEDクラスを初期化します
? blink()メソッドは指定されたLEDを点滅さ
せます
13
プログラム2:全部のLEDを点滅
from gpiozero import LED
green = LED(14)
yellow = LED(15)
red = LED(18)
green.blink(1,1)
yellow.blink(2,2)
red.blink(3,3)
14
プログラム2の説明
? 黄、赤のLEDもGPIOピン番号を指定して
初期化します
? blink()メソッドに2つの数値を与えると指定
された秒だけ点灯、消灯して点滅します
1. 2つの数値の組み合わせを変えてみよう
2. もっと速く点滅させるには?
15
試してみよう
プログラム3:全部のLEDを点灯
from gpiozero import LED
from time import sleep
green = LED(14)
yellow = LED(15)
red = LED(18)
green.on()
sleep(1)
yellow.on()
sleep(1)
red.on()
sleep(1)
16
プログラム3の説明
? timeライブラリからsleepクラスを読み込ん
でいます
– sleepクラスは指定した秒数だけPythonプログ
ラムの実行を停止します
– LEDクラスのように初期化しないでも使えます
? LEDクラスのon()メソッドはLEDを点灯させ
ます
– Pythonプログラムの実行が終了してもLEDは
点灯したままです
17
プログラム4:点灯?消灯
from gpiozero import LED
from time import sleep
green = LED(14)
yellow = LED(15)
red = LED(18)
green.on()
sleep(1)
yellow.on()
sleep(1)
red.on()
sleep(1)
green.off()
sleep(1)
yellow.off()
sleep(1)
red.off()
sleep(1)
18
プログラム4の説明
? LEDクラスのoff()メソッドはLEDを消灯させ
ます
? LEDクラスにはtoggle()メソッドもあります
– 点灯している場合には消灯、消灯している場
合には点灯させます
1. off()メソッドの代わりにtoggle()メソッドを
使ってみよう
19
試してみよう
プログラム5:点灯?消灯をくりかえし
from gpiozero import LED
from time import sleep
green = LED(14)
yellow = LED(15)
red = LED(18)
While True:
green.on()
sleep(1)
yellow.on()
sleep(1)
red.on()
sleep(1)
green.off()
sleep(1)
yellow.off()
sleep(1)
red.off()
sleep(1)
※先頭の空白は、TABキーで入力するか、IDLEのエディタの機能でインデントします
20
プログラム5の説明
? while True:はその後に続く処理を繰り返し
ます
? Pythonではインデントで文字下げされた連
続した行を1つのまとまりとして扱います
– while文と組み合わせると、まとまりが繰り返し
実行されます
– まとまりの終わりは文末、あるいは空行です
? IDLEのエディタで一括インデントできます
21
一括インデントの方法
22
インデントしたい範囲を選択して
FormatメニューからIndent Regionを選択します
インデント後のプログラム
23
選択した範囲の行頭がインデントされます
プログラム6:信号機の動作
from gpiozero import LED
from time import sleep
green = LED(14)
yellow = LED(15)
red = LED(18)
While True:
green.on()
sleep(3)
green.off()
yellow.on()
sleep(1)
yellow.off()
red.on()
sleep(2)
red.off()
※先頭の空白は、TABキーで入力するか、IDLEのエディタの機能でインデントします
24
プログラム6の説明
? 信号機のようにLEDが点灯します
? 信号の切り替わるタイミングはsleep()メソッ
ドの値で調整しています
1. 切り替わりのタイミングを調整して、本物
の信号機らしい動作にしてみよう
25
試してみよう
Pi-STOP 回路図
26
? 緑?黄?赤の3つの
LED
? G?Y?R?GNDの4つ
のGPIOピンソケット
– YはAのこともある
? GPIOで電流を流す
とそれぞれのLED
が光ります
参考
どこに挿す?
? Pi-StopのGNDピンソ
ケットにRaspberry Pi
のGNDピンを挿す
? 残りの3つをGPIOピン
(無記入)に挿す
? GNDの隣に3つGPIO
ピンがある場所ならど
こに挿してもOK
27
参考
挿せるのは6カ所
? すべて外向き
– Dは逆向きも可
? 表記の「Yellow」は使
用しているPi-Stopで
はA(Amber)表記
– 海外では黄色信号を
Amberと表記すること
もあるため
28
参考
ピンアサインとGPIOピン
? 今回はLocation Cを
使用
? GPIOピン番号は以下
の表の通り
29
ピン番号 GPIOピン
8(Green) GPIO14
10(Yellow/Amber) GPIO15
12(Red) GPIO18
プログラミングではGPIOピンの番号を使います
参考

More Related Content

やってみよう!Pi-Stopで学ぶRaspberry Pi+Pythonプログラミング