RaspberryPiでLED点滅
Raspberry Piで実際に電子工作に挑戦!!
以前の記事でRaspberry Pi の導入とPythonによるプログラミング環境の構築までを行いました。
【RaspberryPi-1】Raspberry Piのセットアップと初期設定【導入】
【RaspberryPi-2】開発環境の構築【VS Code】
今回は、実際にプログラムを書いてRaspberry Piに搭載されている任意のI/Oポートから信号を出力してLEDを点灯してみましょう!
準備するもの
今回の記事で使用するものは、
- Raspberry Pi
- カーボン抵抗 330Ω
- LED
- ブレッドボード
- ジャンパー線
となります。
抵抗値の計算などは過去の記事を参考にしてください。
【電子工作入門1】 LEDを光らせるための知識
LEDを点灯させるための配線
Raspberry PiでLEDを点灯させるための回路図と配線を考えます。
そのためにはまずRaspberry Pi のピンアサインを見ていきましょう。
今回は6番のGNDと12番のGPIO18を使用していきます。
画像なのGPIO.BCMとGPIO.BOARDは後で説明しますが重要となります。
LEDを点灯されるための配線は以下のようになります。
LED点灯プログラムの作成
まずは、任意のピンから電気信号を出力させてみましょう。
プログラムは以下のように書きました。
import RPi.GPIO as GPIO #GPIO用モジュールのインポート LedGpio = 18 #変数LedGpioに18を代入 GPIO.setmode(GPIO.BCM) #GPIOのモードをGPIO.BCMに GPIO.setup(LedGpio, GPIO.OUT) #LedGpioの値のピンを出力モードに GPIO.output(LedGpio, True) #LedGpioの値のピンから出力
1行目でGPIOを使用するための宣言をします。
GPIOはGeneral Purpose Input/Output(ジェネラル・パーパス・インプット/アウトプット)の略で汎用I/Oポートと言われます。
汎用I/OポートをRaspberr Piで制御するための宣言です。
4行目でGPIOのモードを指定します。今回はBCMで宣言しています。
GPIO.BCMで宣言するとピンアサイン図のGPIOの番号で制御するピンを宣言できます。
そのため、このプログラムではピン番号12のGPIO18から信号が出力されます。
今回は使用していませんが、GPIO.BOARDで宣言するとピン番号で宣言できます。
同様のプログラムでGPIO.BCM→GPIO.BOARDに変更すると、ピン番号18のGPIO24から出力されることになります。
5~6行目で指定したピンのモードを出力設定にして、出力制御をしています。
実際に動かすと、以下のようにLEDが点灯します。
LED点滅プログラム(Lチカ)の作成
先ほど使用したプログラムを使用してLED点滅するプログラムを作成してみましょう。
作成したプログラムが以下になります。
import RPi.GPIO as GPIO #GPIO用モジュールのインポート import time #時間制御用Timeモジュールのインポート LedGpio = 18 #変数LedGpioに18を代入 WaitIime = 0.2 #変数WaitTimeに0.2を代入 GPIO.setwarnings(False) #警告文の抑制用 GPIO.setmode(GPIO.BCM) #GPIOのモードをGPIO.BCMに GPIO.setup(LedGpio, GPIO.OUT) #LedGpioの値のピンを出力モードに for i in range(20): #以下の処理を20回繰り返し GPIO.output(LedGpio, True) #LedGpioの値のピンから出力 time.sleep(WaitIime) #WaitTime秒待つ GPIO.output(LedGpio, False) #LedGpioの値のピンから出力を停止 time.sleep(WaitIime) #WaitTime秒待つ GPIO.cleanup #GPIOの設定を初期化
4行目のWaitTimeでsleepの時間を決めています。
単位は (秒) です。
6行目と16行目はプログラム終了時のGPIOの後処理のために入れています。
プログラム実行時にGPIOの設定がクリアされていない時にwarningが出力されます。
プログラム自体は正常に出力されるのですが、目障りではあるので対策をしています。
6行目のGPIO.setwarning(Falese)を入れることで、warningが出力されない様にしています。
そして、16行目でGPIOの設定をクリアしています。
10~14行目でループさせています。
0.2秒の間隔で点灯、消灯を20回繰り返します。
それで、点滅を表しています。
実際に動かしたときの様子が以下になります。
正常に動くとこのようにLEDが点滅します。
今回は出力だけでしたが、次回はセンサやスイッチなどの入力装置を使ったものを作ってみたいですね。
open CVを使用したカメラ画像の取得や画像処理などもしてみたいですね。
Raspberry Piでしかできないようなことを行っていきたいと思います。