🤖

【Raspberry Pi】電子工作のHelloWorld 「Lチカ」

2022/07/24に公開

Lチカ!!

新しい言語を始めるとき、とりあえず「Hello World」から始めますが、
電子工作のHelloWorldは、LEDをチカチカさせる事かなと思います。
(LCDにHelloWorldの文字列を出力するとかじゃないです! )

「豆電球を電池につなげば明かりがつく」ようなものですかね。
豆電球との違いは、LEDには極性があるという事。
プラスとマイナスの向きが逆だと点灯しません。
そして抵抗が必要だという事。
豆電球よりもデリケートなのです。

さて、ラズパイには、3.3V、5V、GND、GPIOのピンが存在します。
単純にLEDを点灯させるだけならば、

3.3Vピン - 抵抗 - LED - GND

のようにすれば、LEDは光ります。 (Lピカというらしい・・・)

これでは、単に豆電球を電池に繋いだだけのような状態ですので、
電子工作らしく点滅させます。(これがLチカ!)

3.3Vに繋いでいた線を、GPIOピンに繋ぎ変え、
プログラムでピンの出力を制御することで、LEDを点滅させます。

C++ や js (node.js)でも制御できるようですが、pythonの勉強も兼ねているため、pythonでやります。

import RPi.GPIO as GPIO
from time import sleep

LED = 2
GPIO.setmode(GPIO.BCM)
GPIO.setup(LED, GPIO.OUT)

try:
    while True:
        GPIO.output(LED, GPIO.HIGH)
        sleep(1)
        GPIO.output(LED, GPIO.LOW)
        sleep(1)

except KeyboardInterrupt:
    pass

GPIO.cleanup()

ソースコードはこんな感じ。pythonは2系です。

line1: import RPi.GPIO as GPIO
GPIO制御のためもモジュールを読み込み、エイリアスを付ける。

line5: GPIO.setmode(GPIO.BCM)
ピンのモード指定方法の設定。GPIO.BOARD とすると左上からの連番になるらしい。
連番の方が分かりやすいけど、BCMの方が一般的だと思う。

line6: GPIO.setup(LED, GPIO.OUT)
BCMの2番ピンを出力に設定する。 GPIO_IN とすると、ピンの状態を読むモードになる。

line10: GPIO.output(LED, GPIO.HIGH)
2番ピンに3.3Vの電圧をかける。つまりLEDが点灯する。

line10: GPIO.output(LED, GPIO.LOW)
2番ピンに0Vの電圧をかける。(表現あってる?)つまりLEDが消灯する。

以上が、1秒おきに点灯と消灯を繰り返すプログラムです。
無限に繰り返すので、終了するときは、Ctrl-cを押します。

ループをJavaでいうところの try-catch のようなもので囲い、
Ctrl-cで終了したときに、後処理を行います。
passは何もしないという意味ですが、その後GPIO.cleanup()が呼ばれ
GPIOピンが初期化され、プログラムが終了します。


Lチカ


動画とか撮ってみた

Lチカ

まとめ

とりあえず、Lチカは無事に出来ました。
プログラムは思いのほかシンプルで良い感じです。

普段Javaを利用している身としては、pythonの動的型付けに違和感があります。(怖い)
行末のセミコロンが不要(あっても良いらしい)だったり、 ブロックをインデントで表現したりするのが、pythonの特徴ですね。(初心者の感想)

追記

プラグイン入れたらコード部分が映えるようになったけど、むしろ浮いているような・・・
静止画ではLピカとLチカの違いが分からないので動画撮ってみましたが、良い感じですね。

GitHubで編集を提案

Discussion