今回はGPIOにLEDとSWを接続してLチカをして遊んでみます。
作業順序は以下のとうりです。
仕様を決定する
単にLED1個が点滅するだけでは、面白くありません。SWを1個追加してSWの状態によって点滅するLEDを変えることにします。SWを押していないときには、緑のLEDを点滅させ押している間だけ赤のLEDを点滅させることにします。これでGPIOのINPUTとOUTPUTの両方がTEST出来ることになります。
回路図の作成
SW:GPIO23 INPUT、LED赤:GPIO24 OUTPUT、LED緑:GPIO25 OUTPUTに接続
プログラムの作成
最初にプログラム開発環境がインストールされているか、調べます。多分インストールされていると思いますが私の場合は自分でOSをインストールしたせいか、インストールされていませんでした。START>プログラミング>でThonny Python IDEが存在する事を確認します。なければSTART>設定>Recommended Software>ProgrammingでThonnyにチェックを入れてApplyボタンでインストールします。
START>プログラミング>Thonny Python IDEで以下のプログラムを入力します。
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(24, GPIO.OUT) #赤LED
GPIO.setup(25, GPIO.OUT) #緑LED
GPIO.setup(23, GPIO.IN) #PUSH-SW
try:
while True:
if GPIO.input(23) == GPIO.HIGH: #SWが押されていたら
GPIO.output(24, GPIO.HIGH) #赤LED点灯
time.sleep(0.5)
GPIO.output(24, GPIO.LOW) #赤LED消灯
time.sleep(0.5)
else:
GPIO.output(25, GPIO.HIGH) #緑LED点灯
time.sleep(0.5)
GPIO.output(25, GPIO.LOW) #緑LED消灯
time.sleep(0.5)
except KeyboardInterrupt:
pass
GPIO.cleanup() #GPIOクリア
ブレッドボード上に組んでみる
GPIOコネクタのピンアサインは以下の通りです。GPIOの番号とPIN番号とは何の関係もないので注意が必要です。
LEDは足の長い方がアノード(A)で短い方がカソード(K)です
動かしてみる、反省点など
プログラムのスタートはThonnyのRUNボタンを押す。プログラムの終了はCtrl+Cで行います。ブレッドボード上のタクトSWを押していない間は緑のLEDが点滅してSWを押している間は赤のLEDが点滅しているはずです。一応初期の目的は達成できました。
今回SWからGNDに接続している330Ωの抵抗はプルダウン抵抗でSWが押されていない間GNDレベルを保証するためのものですがGPIO内部にプルアップとプルダウンの抵抗は内蔵されていてプログラムでON/OFFできるはずなので改良の余地ありだと思います。
コメント