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

2019年3月11日

さてさて、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が点灯し、もう一度押すと消灯します。

スイッチを押すと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 に変更するだけです。

Lチカ実施の画像

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チカを実施しました。暇つぶしには丁度良かったですね。

スポンサーリンク
この記事を書いた人

60爺

60路を越え、RaspberryPi と出会い、その関係でブログ開設(2017/2~)となりました。始めてみると、コツコツやるのが性に合ってしまい、漢字の記事から家の補修・将棋・windows10関係・別名・言い方などジャンルを拡大して今に至ってます。まだまだ、元気なので新たな話題を見つけて皆様に提供できればと思っています。「プロフィールはこちら

raspberrypi

Posted by 60爺