愛知県稲沢市在住の【中小企業診断士✖️IoTプロフェッショナルコーディネーター】が、ものづくりの楽しさをお伝えする《がちゃラボ》です。
今回は簡単・格安IoTでお馴染み、Raspberry pi を使って、2つ以上のLEDをチカチカと点滅制御する方法を書いていきたいと思います。
これができると、信号機のような製品の試作機・デモシステムを作ることができますし、ネットワーク上のデータを読み取ってLEDの色を表示し分けるようなスマート製品の試作もできるようになります。
今回も制御にはPythonというプログラミング言語を使いますので、そちらも説明していきます。
Raspberry pi でLEDを制御するために準備するもの
準備する機材については、Raspberry pi やLEDなど前回と同じです。ただ、複数のLEDをチカチカと制御するということで、LEDや抵抗、ジャンプワイヤは倍の数準備してください。
前回の記事はこちら↓。
- Raspberry pi一式
- LED×2
- 抵抗×2
- ブレッドボード
- ジャンプワイヤ(必要な数だけ準備)
それでは、まずは回路を組むところから始めていきましょう。
複数のLEDをRadpberry pi に接続する
「LEDを複数」と言われると、並列?直列?のように昔学校で習った事を思い出す人もたくさんいるかもしれません。たしかに必要な技術ではありますが、今回はそういう知識は不要です!
GPIOを2つ使って、それぞれを個別に(1つのLEDだと思って)制御・コントロールするからです。
では、繋ぎ方です。
前述のページではLEDをGPIO02に繋いでいますが、もうひとつのLEDを別のGPIOの端子に繋ぐだけです。これだけで接続は終わり!
例えばGPIO04に繋ぐ場合は、下記のようになります。
写真だとこんな感じです。ブレッドボード上でGNDは同じところを使い、GPIOとLEDの間には抵抗を配置します。
複数LED点滅のためのPythonプログラムの作成
では、Pythonのプログラムをエディタで書いていきましょう。使うエディタは『 Thonny Python IDE 』です。
自分で書いても良いし、下記をコピーしても良いです。Python入門のようなプログラムですが、これを発展させていくとPythonでできることが増えていきます。
import RPi.GPIO as GPIO *1)
import time *2)
GPIO.setmode(GPIO.BCM) *3)
GPIO.setup(2, GPIO.OUT) *4)
GPIO.setup(4, GPIO.OUT) *4)
while True: *5)
GPIO.output(2, GPIO.HIGH) *6)
GPIO.output(4, GPIO.HIGH) *6)
time.sleep(0.5) *7)
GPIO.output(2, GPIO.LOW) *6)
GPIO.output(4, GPIO.LOW) *6)
time.sleep(0.5) *7)
解説は後述します。
Pythonのプログラムをテストしよう
作ったプログラムを実行しましょう。なお、プログラムを実行する事を、テストすると言ったりします。
実行すると、2つのLEDがチカチカと点滅すると思います。点滅しない場合は、制御できていないという事なので、回路の接続方法やプログラムを確認してください。
Pythonプログラムの説明
では、プログラムの中身を説明していきます。
*1) GPIOを制御するためのライブラリをインポート
*2) 待ち時間を設定するためのライブラリとインポート
*3) モードを指定。GPIO02などの役割で制御したい場合には BCM というモードを指定。
*4) GPIO02とGIPIO04が、出力(OUT)ですよ、と指定。
*5) ずっと繰り返すために、while True: を記述。
*6) GPIO02 と GPIO04 に HIGH,LOW の信号を送る(HIGH:点灯、LOW:消灯という信号をOUTする)
*7) 0.5秒間隔毎に点灯⇔消灯を繰り返すように待ち時間を設定
見ていただいたら分かるように、1つのLEDを制御するプログラムに対して、もう一つGPIOの設定を加えるだけです。簡単に言うと、GPIOの番号を変えたプログラムを追加しただけです。
このようにGPIOの指定をどんどん増やしていくことで、3つ4つのLED点滅を制御することが可能となります。また、HIGHとLOWのタイミングを変えると、点滅速度やタイミングが変わりますので試してみてください。
さいごに
今回はRaspberry pi とPythonによって、複数のLEDをチカチカと点滅させる制御方法を説明しました。
Pythonで配列を組んでもっとたくさんのLEDを点滅させる、何かのセンサーに反応して点滅を制御するということもできますので、今後そのような記事も書いていきたいと思います。
コメント