スポンサーリンク

知識ゼロから始めるラズパイ -GUIでLEDの点灯制御-

RaspberryPI

CPU温度に合わせてCPUファンの回転速度を制御する前に、基本中の基本ともいえる「Lチカ」に挑戦します。ただ挑戦しても面白みがないので、GUIを使い「点灯回数」「点灯時間」「消灯時間」を自由に入力できるプログラムにしたいと思います。

スポンサーリンク

Lチカの電子回路 ーLEDの配置についてー

接続は簡単でブレッドボードを使用して「11番ピン」→「抵抗」→「LED」→「GND」となるように繋いでいます。抵抗はLEDとセットで販売されていたものなので、難しいことを考えることなく接続しています。

LED点灯回路

スポンサーリンク

今回作ったプログラム

今回は「RPi.GPIO」というライブラリを使用しました。私の環境では最初からインストールされていました。

スポンサーリンク

プログラムの説明

「tkinter」については、前回も使用していますので説明を一部省略しています。下記のリンク先で説明しています。

知識ゼロから始めるラズパイ -CPU温度の監視をGUIで-
ラズベリーパイ(Raspberry PI 4B)のCPU温度の監視することのできるGUIアプリをPythonで作成してみました。プログラミングは慣れていないので、非効率な記述となっていた場合はご指摘ください。
(1行目)import RPi.GPIO as GPIO

「RPi.GPIO」をインポートして、「GPIO」という名前に省略しています。

(5行目)def LED_shine():

「LED_shine」という名前の関数を作成します。あとでtkinterで作成するボタンを押したときに、この関数が動作する仕組みです。

(7~10行目)
  • GPIO.setmode(GPIO.BCM) は、GPIOの番号をBCMで指定する記述です。ピン番号を使用する場合はBCMのところをBOARDに変更します。
  • pin = 17  変数「pin」に数字の「17」を格納
  • GPIO.setup(pin, GPIO.OUT) は、BCM番号17番を電気を出力させる記述です。逆に、入力の場合はINを使うようです。

ラズベリーパイのピン配列

説明書によると、ラズパイのピン配列はこのようになっています。今回はBCM17番(ピン番号11番)を使用しました。

(12~17行目)

GUIのウインドウに入力された文字列をgetして、int型にしています。入力は(ms:1ミリ秒)としているので、1000で割り戻しています。「rg」にループ回数、「on」に点灯時間、「of」に消灯時間を格納させています。

(19~23行目)

先ほど取得した、ループ回数、点灯時間、消灯時間どおりにLEDを点灯させる記述です。

(25行目)GPIO.cleanup()

GPIOを終了させる記述です。そしてここまでが、関数LED_shineの記述です。

(31~47行目)
  • label1 = tk.Label(win,text=”ループ回数”) :文字のラベル
  • label1.place(x=30,y=10) :label1の配置場所の指定
  • text1 = tk.Entry(width=10) :文字入力ボックスの作成
  • text1.insert(0,10) :文字入力ボックスへの初期値を「10」にしています。insertは無しでもプログラムは動作しますが、何度も入力するのが面倒なので記述しました。
  • text1.place(x=150,y=10) :text1を配置します。
(49~50行目)

but1 = tk.Button(win,text=”スタート”,command = LED_shine)
but1.place(x=100,y=130)

この2行で、「スタート」というボタンを配置し、ボタンを押すと関数「LED_shine」を動かす記述です。

スポンサーリンク

完成

Pythonを実行すると、このようなウィンドウが出現します。「ループ回数」「点灯時間」「消灯時間」を入力してスタートボタンを押すと、LEDが点灯します。

プログラム実行後表示されるウインドウ

使用するLEDは1つだけの簡単なプログラムですが、ほかのピンも使用して色々な色のLEDを点灯させると楽しいかもしれません。

知識ゼロから始めるラズパイ -CPU温度によるファン制御-
RaspberryPIに小型のCPUファンをつけたところ、常に全力で回転する仕様のためノイズに悩まされていました。そこで、ラズパイのCPU温度を取得して、温度に合わせた回転とするための電子回路とPythonプログラムを作りましたので、説明します。
タイトルとURLをコピーしました