ラズパイでpythonを使い、今さらながらLチカなんぞをプログラムした
さてさて、Raspberrypi でいろいろやってきていますが、一度初心に帰ってLチカなんぞをやってみたいと思います。
Raspberrypi の GPIO を使用して、LEDを光らせたり、これを python でコントロールしてみましょう。
そのためには、Raspberrypi のピン構成を知っておく必要があります。こちらのページから、この図を見てもわかりやすいと思います。
これらのピン構成が分かったところで、Lチカするためのpupythonプログラムを作成してみましょう。
よろしければ、しばしのお付き合いをお願いします。
LED点灯
さて、最初は、初歩の初歩、LチカならぬLピカです。即ち、LEDの点灯です。
これは、非常に簡単です。
LEDを点灯するには、Raspberrypi 1番ピンの 3.3V と 6番ピンGROUND を接続すれば使用すればOKですが、LEDのアノード側に抵抗を入れることが必須です。
抵抗を入れなくてもLEDを点灯できますが、LEDが壊れる可能性が大きいので必ず入れてください。
このように、LEDが点灯して、ずーと光ったままです。
LED点灯は、これ以上変化がありませんので、これで終了します。
タクトスイッチによるLEDの点灯
次は、タクトスイッチを入れて、タクトスイッチを押すとLEDが点灯し、もう一度押すと消える回路を作成します。
こちらも簡単です。
先程のLED点灯の回路に、タクトスイッチを追加するだけです。
タクトスイッチは、このような形をしています。
ちょっと見にくいですが、当初は赤線の方に流れがあります。スイッチを押すと、黄色の方向に流れが変わります。
動画を載せます。スイッチを押すとLEDが点灯し、もう一度押すと消灯します。
スイッチを押すとLEDがついたり消えたりしますね。
タクトスイッチとプログラム
次は、タクトスイッチが押されたことを python のプログラムで判定し、LEDを点灯させるプログラムを書いてみましょう。
ラズパイのピン構成を1.で示しました。これを見てみると、GPIOに対し番号が振られています。
これらのピン番号を扱うことで、pythonから raspberrypi に指示を与えることができます。
配線
配線図を示します。
LEDへの配線と、タクトスイッチへの配線があります。
LEDへの配線ですが、3.では、1番ピンの 3.3V からLEDへのアノードに接続されましたが、今回はラズパイの GPIO27 と接続します。カソード側は、GNDで変わりません。
タクトスイッチの配線は、LEDから独立させます。一方は、1番ピン 3.3V と接続し、他方は、GNDとGPIO18に接続します。
pythonプログラム
タクトスイッチが押されたかどうかを判定し、タクトスイッチが押されたらLEDを点灯します。そうでない場合は、LEDを消灯します。
上記3.で実施した内容を Python でコントロールします。
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(27, GPIO.OUT)
GPIO.setup(18, GPIO.IN)
try:
while True:
if GPIO.input(18) == GPIO.HIGH:
GPIO.output(27, GPIO.HIGH)
else:
GPIO.output(27, GPIO.LOW)
time.sleep(0.1)
except KeyboardInterrupt:
pass
GPIO.cleanup()
GPIO.setmodeは、ラズパイのピン指定(物理ピン番号(左上からの連番)か役割ピン番号か)を指定します。
今回は、 ( GPIO.BCM ) を指定したので、役割ピン番号 となります。物理ピン番号にするには、 ( GPIO.BOARD) とします。
タクトスイッチの押されたかどうかの判定は、GPIO18で行いますが、これを設定しているのが、GPIO.setup(18, GPIO.IN)です。
押されるとHIGHが、そうでないとLOWが返ってきます。これを while 文の中で判定しています。
LED点灯は、GPIO27が司どっています。タクトスイッチが押された場合、HIGHを設定し、そうでないときLOWを設定します。
HIGHを設定すると、その指定したピンから3.3Vが、LOWの場合は0Vが出力されます。設定は、GPIO.setup(27, GPIO.OUT)です。
Lチカの実施
それでは、python を用いて、LEDの点灯と消灯を繰り返すLチカを実施してみましょう。
配線
回路は、2のLED点灯を用いた回路の一部を変更するだけで済みます。
そして、Raspberrypi 1番ピンの 3.3V を接続してきたピンを 17 に変更するだけです。
pythonプログラム
Lチカを行うプログラムを書きます。GPIOを操作するライブラリRPi.GPIOを使用します。
GPIOの出力をHIGHにすることで端子を3.3Vにできます。LOWで0Vですね。これを利用してLチカを行います。
下記に、そのプログラムを示します。
import RPi.GPIO as GPIO
import time
GPIO.setmode( GPIO.BCM )
GPIO.setup ( 17, GPIO.OUT )
while True:
GPIO.output( 17, GPIO.HIGH )
time.sleep( 1 )
GPIO.output( 17,GPIO.LOW )
time.sleep( 1 )
GPIO.cleanup()
実行は、次のコマンドを入力して Enter します(xxxはプログラム名)。
python3 xxx.py
すると、Lチカが始まります。終了は、Ctrl+C ですね。
GPIO.setup ( 17, GPIO.OUT ):LEDを接続した GPIO の番号をデジタル出力にする意味です。
最後に
時間を持て余したので、ラズパイで今さらながらLチカなんぞをやってみようと思い立ちました。
Lピカから始め、タクトスイッチを入れたLED点灯も行いました。
タクトスイッチにpythonプログラムによる制御も行ってみました。
最後にLチカを実施しました。暇つぶしには丁度良かったですね。
ディスカッション
コメント一覧
まだ、コメントがありません