- ラズベリーパイを使った簡単な電子工作をしたい人
- Python3(IDLE)の使い方を理解したい人
- ラズパイののGPIOよりLEDを点滅させる方法を知りたい人
こんにちは.けんゆー(@kenyu0501_)です.
ラズベリーパイのPython3(IDLE)を使って簡単にLEDを光らせる方法を書きます.
今回はLEDを点滅させるだけですが,Python3(IDLE)の使い方を覚えると今後とも他のプログラムを色々動かすことができるので,覚えておいたほうが良いです.
では早速やっていきましょう!
Python3(IDLE)を起動させる
まずはデスクトップ画面にあるメニューからPython3 (IDLE)を起動して,ファイルを作り,動かすまでのの流れを説明します.
超簡単です.
- Python3 (IDLE)の起動
- Python Shellが開いたらNew Fileよりテキストエディタを作成
- プログラミングをする
- 名前をつけて保存して動かす(Run)
Python 3 (IDLE)の起動とファイル作成
まずは,以下のようにPython3を起動しましょう.
起動が終わったら,Python Shellが開くので,「New File」からテキストエディタを開いて,led.pyを作ります.
led.pyのファイルは,とりあえずデスクトップにおいておきます.
(どこでも良いですが)
プログラミングをした後にRun Moduleで動かす
先に,プログラムの動かしかたを確認していきましょう.
プログラムを書いて,GPIO側のLEDの接続が完了したら「Run > Run Module」を押してください.
そしたらプログラムが回ります.
では,肝心のLEDを点滅させるプログラムと配線について見ていきましょう.
プログラムと配線について
プログラムについて
プログラムはこちらです.
LEDを5回点滅させる簡単なプログラムです.
0.3秒ごとに点滅を繰り返します.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import RPi.GPIO as GPIO import time PORT = 26 #GPIO.BCM, Port number of GPIO #GPIO.OUT, Condition of the Port GPIO.setmode(GPIO.BCM) GPIO.setup(PORT,GPIO.OUT) for i in range(5): print("i=",i) GPIO.output(PORT,GPIO.HIGH) time.sleep(0.3) GPIO.output(PORT,GPIO.LOW) time.sleep(0.3) GPIO.cleanup() |
モジュールは「RPi.GPIO」と「time」を使っています.
「RPi.GPIO」は長いので,「GPIO」と打てば使えるように as で短縮形にしてます.
GPIOの初期化やピン番号を扱うためには,GPIO.setmode()関数を使います.
ポートの指定には以下の2つの種類があります.
モード名 | 説明 |
---|---|
GPIO.BOARD | GPIO.BCM |
連番のピン番号で指定する方法 | 割り振られたポート番号でする方法 |
また,「GPIO.setup()関数」は,出力が「GPIO.OUT」で,入力が「GPIO.IN」です.
for文が5回,回り終えたら,GPIOclearnup()で初期化をします.
配線について
LEDと抵抗を使いますが,配線についてはこちらです.
GPIO26を使っています.
プログラムを回してみた
こんな感じでプログラムが回り,LEDが5回点滅します.
やってみたい人がいたらどーぞ!
ちょっとした発展:4つのLEDを無限に点滅させる
次に,4つのLEDを連続で,無限に点滅させる方法を書いておきます.
実際に出力はこのようになっています.
プログラムについて
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) PORTS = [4,17,27,22] for i in PORTS: GPIO.setup(i,GPIO.OUT) while True: try: for i in PORTS: GPIO.output(i,GPIO.HIGH) time.sleep(0.1) GPIO.output(i,GPIO.LOW) time.sleep(0.1) except KeyboardInterrupt: GPIO.cleanup() GPIO.cleanup() |
while文を使って,無限ループ構造にしてます.
[ctrl]+Cでループから抜けることができます.
さらに,PORTSをリストにして[4,17,27,22]を設定しました.
これは利用したGPIOのポート番号です.
色々と変更してみてください