ラズパイでpythonを使い、今さらながらLチカなんぞをプログラムした

シェアする

Pocket

さてさて、Raspberrypi でいろいろやってきていますが、一度初心に帰ってLチカなんぞをやってみたいと思います。

Raspberrypi の GPIO を使用して、LEDを光らせたり、これを python でコントロールしてみましょう。

1.ラズパイのピン構成

Raspberrypi のピン構成は、公式サイトのこのページに出ています。

こちらのページから、この図を見てもわかりやすいと思います。

2.LED点灯

さて、最初は、初歩の初歩、LチカならぬLピカです。即ち、LEDの点灯です。これは、非常に簡単です。

LEDを点灯するには、Raspberrypi 1番ピンの 3.3V と 6番ピンGROUND を接続すれば使用すればOKですが、LEDのアノード側に抵抗を入れることが必須です。

入れなくても、LEDを点灯できますが、LEDが壊れる可能性が大きいので必ず入れてください。

このように、LEDが点灯して、ずーと光ったままです。

LED点灯は、これ以上変化がありませんので、これで終了します。

3.タクトスイッチによるLEDの点灯

次は、タクトスイッチを入れて、タクトスイッチを押すとLEDが点灯し、もう一度押すと消える回路を作成します。

こちらも簡単です。先程のLED点灯の回路に、タクトスイッチを追加するだけです。

タクトスイッチは、このような形をしています。

ちょっと見にくいですが、当初は赤線の方に流れがあります。スイッチを押すと、黄色の方向に流れが変わります。

動画を載せます。スイッチを押すとLEDが点灯し、もう一度押すと消灯します。

4.タクトスイッチとプログラム

次は、タクトスイッチが押されたことを python のプログラムで判定し、LEDを点灯させるプログラムを書いてみましょう。

ラズパイのピン構成を1.で示しました。これを見てみると、GPIOに対し番号が振られています。これらのピン番号を扱うことで、pythonから raspberrypi に指示を与えることができます。

(1) 配線

配線図を示します。

LEDへの配線と、タクトスイッチへの配線があります。

LEDへの配線ですが、3.では、1番ピンの 3.3V からLEDへのアノードに接続されましたが、今回はラズパイの GPIO27 と接続します。カソード側は、GNDで変わりません。

タクトスイッチの配線は、LEDから独立させます。一方は、1番ピン 3.3V と接続し、他方は、GNDとGPIO18に接続します。

(2) 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)です。

5.Lチカの実施

それでは、python を用いて、LEDの点灯と消灯を繰り返すLチカを実施してみましょう。

(1) 配線

回路は、2のLED点灯を用いた回路の一部を変更するだけで済みます。

そして、Raspberrypi 1番ピンの 3.3V を接続してきたピンを 17 に変更するだけです。

(2) 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 の番号をデジタル出力にする意味です。

スポンサーリンク

シェアする

フォローする