Raspberry Pi – LED点滅

概要

SunFounderのDa Vinciキットを買ったので、まずLED点滅から勉強。実行の主要部分を強調するため一部簡略化した。流れは以下の通り。

  • LEDと保護抵抗を直列に繋ぎ、アノード側を電源ライン、カソード側をGPIO17に接続
    • GPIO17がHIGH (3.3V)のときは電源電圧とバランスしてLEDが消灯
    • GPIO17がLOW (0V)の時は電流が流れてLEDが点灯
  • MicoroPythonで、GPIO17のHIGH/LOWをタイマーでウェイトさせながら切替え

要点

  • GPIOを制御するライブラリーRPi.GPIOGPIOの名前でインポート
  • GPIO.setmode(GPIO.BCM)でBCMナンバリングモードに設定
  • GPIO.setup(ピン番号, GPIO.OUT, initial=GPIO.HIGH)でGPIO17を出力に設定し、初期レベルをHIGH (LED消灯)に設定
  • GPIO.output(ピン番号, GPIO.HIGH/LOW)で電圧レベルを切替え
  • キーボード割込みにtry~except KeyboardInterrupt~を利用
  • 終了時にGPIO.cleanup()でリソースを解放

回路図

LEDのアノード側に220Ωの抵抗を介して3V3 (3.3V)へ、カソード側はGPIO17に繋ぐ。DavinciのLEDの定格電流は不明だが20mAとすると、この回路の場合はi = 3.3/220で15mAで定格内に納まっている。

回路組み立て

ブレッドボードにGPIO拡張ボードを挿し、Raspiと接続。

テスト

コマンドライン

RaspiのThonnyを立ち上げ、コマンドラインで以下を実行していく。

まずライブラリーのインポート。

エラーが出ず無事にインポートされたので、次はGPIOのモードをBCMにセット。

LEDのピン番号をBCMの17にセット。

GPIO17を出力用にし、初期値をHIGH (3.3V)にセット。

GPIO17の電圧レベルをLOW (0V)にセットし、LEDの点灯を確認。

GPIO17の電圧レベルをHIGHにセットし、LEDの消灯を確認。

スクリプト

とりあえず以下のスクリプトでLEDの点滅を確認。

CTRL-Cでキーボード割込みがあったときに安全に終了するための処理を導入。

SunFounderサイトではsetup()以下をif __name__ == '__main__':ブロックの中に入れているが、これはこのファイルが直接実行されたことを確認するためのもの

接続を反対にする

左記の回路ではLEDのアノード側に3.3Vを供給し、カソードを接続したGPIO17でHIGHの時にLED消灯、LOWの時にLED点灯とした。

一方、以下のようにアノード側の抵抗をGPIO17に接続し、カソードをGNDに接続しても動作させることができる。この場合、GPIO17がHIGHでLED点灯、LOWでLED消灯となる。

コードは以下の通り。GPIO.setup()ではinitialのデフォルトがGPIO.LOWとして明示的に指定していない。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です