Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

761 views

Published on

Raspberry PiとLEDを組み合わせて、Pythonプログラミングを学ぶテキストです。自習できるように開発されています。

Published in: Engineering
  • Be the first to comment

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

  1. 1. やってみよう! Pi-Stopで学ぶ Raspberry Pi+Pythonプログラミング 2019年3月3日版 Open Source People Network みやはら とおる(@tmiyahar)
  2. 2. Pi-Stopとは • Raspberry PiのGPIOピンに挿すだけで簡 単に使える信号機型LED • ScratchやPythonから簡単にLEDの点灯・ 消灯が行えます • パラメータ変更でプログラムの動作原理を 学べます 2 Pi-Stopの詳細は資料の最後を参照
  3. 3. Pythonでプログラミング • Raspberry Piで用意されているPython用の 統合開発環境「IDLE」を使用します 1. 画面左上のラズベリーメニューを開きます 2. 「プログラミング」から「Python 3(IDLE)」を 選びます 3. IDLEが起動します 3 やってみよう!
  4. 4. IDLEの起動 4 ① ラズベリー メニューを開 きます ② 「Python 3 (IDLE)」 を選択して起動します
  5. 5. Pythonプログラムの実行方法 1. 「File」メニューから「New File」を選びます 2. エディタウインドウが開きます 3. エディタにプログラムを書きます 4. 「Run」メニューから「Run Module」を選択して 、記述したプログラムを実行します 5. ファイル保存ダイアログで保存します – 初めての実行の場合にはファイル名を指定します – ファイル名は自分の名前など、他の人と同じにな らないような適当なファイル名をつけてください 5 やってみよう!
  6. 6. 1. FileメニューからNew Fileを選択 6 「File」メニューから 「New File」を選択します
  7. 7. 3. エディタに書くプログラム from gpiozero import LED green = LED(14) green.blink() 7 プログラムの意味については後のページで 解説しています
  8. 8. 4. Run Moduleを選択して実行 8 「Run」メニューから 「Run Module」を選択します
  9. 9. 5-1. 修正したプログラムを保存 9 プログラムを修正すると実行前に保存が必要です OKボタンをクリックします
  10. 10. 5-2. ファイル名を指定します 10 適当なファイル名を入力してSaveボタンをクリックします
  11. 11. ファイル名の付け方 • 「New File」で新しくプログラムを書き始め た場合、実行する前に名前を付けてファイ ルを保存する必要があります • Pythonで書かれたプログラムには「led.py」 のように末尾に拡張子.pyを付けます • 既に存在しているファイル名を付けた場合 、上書き保存となります • 存在しないファイル名を付ければ、新しい ファイルが作られて保存されます 11
  12. 12. 作るプログラム 少しずつ改良を加えながら進めます 1. 緑LEDを点滅 2. 全部のLEDを点滅 3. 全部のLEDを点灯 4. 全部のLEDを点灯・消灯 5. 点灯・消灯をくりかえし 6. 信号機の動作 12
  13. 13. プログラム1:緑LEDを点滅 from gpiozero import LED green = LED(14) green.blink() 13
  14. 14. プログラム1の説明 • gpiozeroライブラリからLEDクラスを読み込 んでいます – gpiozeroライブラリをimportするとRaspberry Pi のGPIOを簡単に使えます – LEDクラスはLEDを光らせます • LEDが接続されているGPIOピン番号を指 定してLEDクラスを初期化します • blink()メソッドは指定されたLEDを点滅さ せます 14
  15. 15. プログラム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) 15
  16. 16. プログラム2の説明 • 黄、赤のLEDもGPIOピン番号を指定して 初期化します • blink()メソッドに2つの数値を与えると指定 された秒だけ点灯、消灯して点滅します 1. 2つの数値の組み合わせを変えてみよう 2. もっと速く点滅させるには? – ヒント:小数点も使えます 16 試してみよう
  17. 17. プログラム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) 17
  18. 18. プログラム3の説明 • timeライブラリからsleepクラスを読み込ん でいます – sleepクラスは指定した秒数だけPythonプログ ラムの実行を停止します – LEDクラスのように初期化しないでも使えます • LEDクラスのon()メソッドはLEDを点灯させ ます – Pythonプログラムの実行が終了してもLEDは 点灯したままです 18
  19. 19. プログラム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) 19
  20. 20. プログラム4の説明 • LEDクラスのoff()メソッドはLEDを消灯させ ます • LEDクラスにはtoggle()メソッドもあります – 点灯している場合には消灯、消灯している場 合には点灯させます 1. off()メソッドの代わりにtoggle()メソッドを 使ってみよう 20 試してみよう
  21. 21. プログラム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のエディタの機能でインデントします 21
  22. 22. プログラム5の説明 • while True:はその後に続く処理を繰り返し ます • Pythonではインデントで文字下げされた連 続した行を1つのまとまりとして扱います – while文と組み合わせると、まとまりが繰り返し 実行されます – まとまりの終わりは文末、あるいは空行です • IDLEのエディタで一括インデントできます 22
  23. 23. 一括インデントの方法 23 インデントしたい範囲を選択して 「Format」メニューから「Indent Region」を選択します
  24. 24. インデント後のプログラム 24 選択した範囲の行頭がインデントされます
  25. 25. プログラム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のエディタの機能でインデントします 25
  26. 26. プログラム6の説明 • 信号機のようにLEDが点灯します • 信号の切り替わるタイミングはsleep()メソッ ドの値で調整しています 1. 切り替わりのタイミングを調整して、本物 の信号機らしい動作にしてみよう 26 試してみよう
  27. 27. おつかれさまでした 以上で終わりです。 皆さんも、いろいろな電子工作と Raspberry Piを組み合わせて 楽しんでください。 27
  28. 28. Pi-STOP 回路図 28 • 緑・黄・赤の3つの LED • G・Y・R・GNDの4つ のGPIOピンソケット – YはAのこともある • GPIOで電流を流す とそれぞれのLED が光ります 参考
  29. 29. どこに挿す? • Pi-StopのGNDピンソ ケットにRaspberry Pi のGNDピンを挿す • 残りの3つをGPIOピン (無記入)に挿す • GNDの隣に3つGPIO ピンがある場所ならど こに挿してもOK 29 参考
  30. 30. 挿せるのは6カ所 • すべて外向き – Dは逆向きも可 • 表記の「Yellow」は使 用しているPi-Stopで はA(Amber)表記 – 海外では黄色信号を Amberと表記すること もあるため 30 参考
  31. 31. ピンアサインとGPIOピン • 今回はLocation Cを 使用 • GPIOピン番号は以下 の表の通り 31 ピン番号 GPIOピン 8(Green) GPIO14 10(Yellow/Amber) GPIO15 12(Red) GPIO18 プログラミングではGPIOピンの番号を使います 参考
  32. 32. この資料について • この資料はRaspberry Pi Foundationが提供する「 CONTROLLING A TRAFFIC LIGHTS SEQUENCE WITH GPIO ZERO」を参考にして作 られています • 元資料がクリエイティブコモンズライセンス「表示ー 継承」でライセンスされているため、本資料も同じ「 表示ー継承」でライセンスされています • 本資料のPowerPointデータが必要な方は作者まで ご連絡ください – メール:tmiyahar@Begi.net – Twitter:@tmiyahar

×