※この記事は公開から時間が経っているため、現在の環境とは内容が異なる場合があります。
ラズベリーパイ(Raspberry Pi Zero WH)のGUI上で、IDLE(アイドル) という開発環境を使って、Python3のプログラムを作ることができます。
この記事では、Python3でLEDを点滅させる「Lチカ」を試します。
Lチカは、LEDをチカチカ点滅させる電子工作の定番です。
シンプルな実験ですが、GPIOの使い方、ブレッドボードの配線、抵抗の役割、Pythonから電子部品を制御する流れがひと通り確認できます。
まあるじゃあ、いよいよLチカをやってみよう。
うさたんLチカってなぁに?
まあるLEDをチカチカ点滅させることだよ。
電子工作の最初の一歩としてよく使われるんだ。
今回の制作内容
Raspberry Pi Zero WHのGPIOから信号を出して、ブレッドボード上のLEDを点滅させます。

大まかな流れは、次の通りです。
- LED、抵抗、ブレッドボードを用意する
- Raspberry Pi Zero WHとブレッドボードを配線する
- Python3(IDLE)でプログラムを書く
- プログラムを保存する
- Run Moduleで実行する
- LEDが点滅するか確認する
LEDが実際に光ると、プログラムで電子部品を動かしていることが目で見えて、かなり楽しいです。
準備するもの
今回のLチカで使うものは、次の通りです。
- Raspberry Pi Zero WH
- microSDカード
- microUSB電源ケーブル
- パソコン
- ブレッドボード
- ジャンパーワイヤー
- 抵抗
- LED
Raspberry Pi Zero WH
Raspberry pi zero WH は、初期設定と環境設定が済んだものを使います。

初期設定はこちらです。

環境設定はこちらです。

microSDカード
Raspberry PiのOSやプログラムを保存するために、microSDカード を使います。

8〜32GB程度のものを目安に使っています。
microUSB電源ケーブル
Raspberry Pi Zero WHの電源用に、microUSB電源ケーブルを使います。

スマホ用のmicroUSB充電ケーブルを使える場合もありますが、電源が弱いと起動が不安定になることがあります。
パソコン
Raspberry Piに接続したり、設定を確認したりするためにパソコンを使います。

この記事では、Raspberry Piの画面をVNC Viewerで表示し、Raspberry Pi上のIDLEでPython3のプログラムを作っています。
ブレッドボード
ブレッドボード は、はんだ付けをしなくても電子部品を差し込んで配線できるボードです。

LEDや抵抗を挿して、ジャンパーワイヤーでRaspberry Piと接続します。
ジャンパーワイヤー
ジャンパーワイヤー は、Raspberry PiのGPIOピンとブレッドボードをつなぐために使います。

抵抗
LEDに流れる電流を制限するために、抵抗を使います。

LEDをRaspberry Piに直接つなぐと、電流が流れすぎてLEDやRaspberry Piを壊してしまう可能性があります。
必ず抵抗を入れて使います。
LED
LEDは、電流を流すと光る部品です。

今回は赤色LEDを使っていますが、基本的な考え方は他の色でも同じです。
ただし、LEDの色や種類によって順方向電圧が変わるため、厳密には抵抗値の計算も変わります。
回路図
今から組むLチカの簡単な回路図はこちらです。
3.3V側から、抵抗とLEDを直列につなぎ、最後にGNDへ接続します。

GNDは、グラウンドと読みます。
電位の基準になる場所で、乾電池のマイナス側につなぐようなイメージです。
抵抗の計算方法
今回は、330Ωの抵抗を使いました。
ここでは、なぜ抵抗が必要なのか、どのくらいの抵抗を使えばよいのかを確認します。
LEDを使うときは、次の情報を見ます。
- LEDの順方向電圧 Vf
- LEDに流したい電流 If
- Raspberry PiのGPIOに流してよい電流
今回使用する赤い3mmのLEDでは、データシートや商品情報から次の値を確認します。
Vf = 2.1V
If = 30mA = 0.030A
ただし、Raspberry Pi Zero WHのGPIOピン1本に流していい電流は8mAまでなので、0.008A(下図の②)の電流が流れる回路を考えます。
8mA = 0.008A
Raspberry PiのGPIOは3.3Vです。
LEDに2.1Vかかるとすると、抵抗にかかる電圧は次のようになります。
3.3V - 2.1V(①) = 1.2V(③)
1.2Vが、抵抗Rにかかることが分かります。

この ② ③の値を使って計算します。
オームの法則は、次の式です。
V(電圧) = I(電流) × R(抵抗)
抵抗を求める場合は、次のように変形します。
R(抵抗) = V(電圧) ÷ I(電流)
今回の値を入れると、こうなります。
R = 1.2[V] ÷ 0.008[A]
= 150[Ω]
つまり、150Ωより大きい抵抗を使う必要があることが分かります。
今回は手元に330Ωの抵抗があったので、この抵抗を使うことにしました。
330Ωなら150Ωより大きいため、LEDに流れる電流をさらに抑えられます。
うさたんオームの法則?
まある今は「LEDには抵抗を入れる」「抵抗値は電圧と電流から考える」くらいで大丈夫だよ。
配線方法
では、実際に配線していきます。

今回の配線は、次のようにします。
GPIO23(ピン16) → 抵抗 → LEDの長い足(+) → LEDの短い足(-) → GND(ピン6)
GPIO23をHIGHにすると、LEDが点灯します。
GPIO23をLOWにすると、LEDが消灯します。
LEDの向きに注意する
LEDには向きがあります。
長い足がプラス側、短い足がマイナス側です。
- 長い足:アノード(+)
- 短い足:カソード(-)
今回の配線では、LEDの長い足を抵抗側へつなぎ、短い足をGND側へつなぎます。
向きが逆だと、LEDが光りません。
Raspberry Piとブレッドボードをつなぐ
Raspberry Pi Zero WHのGPIO23(ピン番号16)と、ブレッドボード上の抵抗をつなぎます。
抵抗の先にLEDをつなぎ、LEDの短い足からRaspberry PiのGND(ピン番号6)へ戻します。
Raspberry PiのGPIOについては、準備する機材の記事内の「GPIOピンとは」でも紹介しています。
写真で見ると、このような配線になります。


配線するときは、電源を切った状態で作業します。
線を挿し間違えたまま電源を入れると、LEDが光らないだけでなく、部品を壊してしまう可能性もあります。
Python3でプログラムを作成する
配線ができたら、Python3のプログラムを作ります。
ここでは、Raspberry PiのGUI上で Python 3(IDLE) を使います。
Raspberry Piを起動し、メニューから次の順番で選択します。
[プログラミング] → [Python 3(IDLE)]

「Python X.X.X Shell」ウィンドウが表示されます。
メニューから次の順番で新しいファイルを開きます。
[File] → [New File]
新しいエディタ画面に、次のプログラムを入力します。
#モジュールを読み込む
import RPi.GPIO as GPIO
import time
# GPIO番号の指定モードを設定
# BCM: GPIO番号で指定
# BOARD: 物理ピン番号で指定
GPIO.setmode(GPIO.BCM)
# GPIO23を出力として使う
GPIO.setup(23, GPIO.OUT)
try:
while True: #無限ループ
# GPIO23をHIGHにしてLEDをON
GPIO.output(23, GPIO.HIGH)
time.sleep(0.5)
# GPIO23をLOWにしてLEDをOFF
GPIO.output(23, GPIO.LOW)
time.sleep(0.5)
# キーボードからCtrl+C割込みが入ったら
except KeyboardInterrupt:
pass #何もせずに次の行へ
# GPIOの設定をリセット
GPIO.cleanup() このプログラムでは、GPIO23を出力に設定し、0.5秒ごとにHIGHとLOWを切り替えています。
つまり、LEDが0.5秒ごとに点灯・消灯をくり返します。

プログラムのポイント
大事なところだけ、順番に見ていきます。
import RPi.GPIO as GPIO
import timeRPi.GPIO は、Raspberry PiのGPIOをPythonから操作するためのライブラリです。
time は、待ち時間を作るために使います。
GPIO.setmode(GPIO.BCM)GPIO番号をBCM方式で指定する設定です。
この記事では、GPIO23という番号で指定します。
GPIO.setup(23, GPIO.OUT)GPIO23を出力として使う設定です。
GPIO.output(23, GPIO.HIGH)GPIO23をHIGHにして、LEDを点灯させます。
time.sleep(0.5)0.5秒待ちます。
GPIO.output(23, GPIO.LOW)GPIO23をLOWにして、LEDを消灯します。
GPIO.cleanup()最後にGPIOの設定をリセットします。
プログラムを止めたあとにGPIOの状態が残らないよう、後片付けとして入れておきます。
エンコーディング宣言について
Pythonのファイルに日本語コメントを書く場合、以前は次のようなエンコーディング宣言を書くことがありました。
# coding: utf-8ただし、Python 3ではデフォルトの文字コードがUTF-8です。
UTF-8を使うだけなら、基本的にはエンコーディング宣言を書かなくても大丈夫です。
ファイルを保存する
プログラムを書いたら、メニューから次の順番で保存します。
[File] → [Save As]
ファイル名は、たとえば次のようにします。
led01.py
Python3でプログラムを実行する
保存できたら、プログラムを実行します。

プログラムを書いたウィンドウのメニューから、次の順番でクリックします。
[Run] → [Run Module]
「Python X.X.X Shell」ウィンドウに RESTART と表示され、プログラムが実行されます。

うまくいけば、LEDが0.5秒ごとに点滅します。
プログラムを止める
プログラムを止めるときは、キーボードで次のキーを押します。
Ctrl + C
Ctrl + C を押すと、KeyboardInterrupt が発生し、プログラムが終了します。
最後に GPIO.cleanup() が実行され、GPIOの設定がリセットされます。
動画で確認する
こちらが、実際にLEDを点滅させている動画です。こちらが、実際に動いている動画です。
うさたんすごい、光った!
まあるやったね。自分で書いたプログラムで部品が動くと、かなり感動するよ。
うまく光らないときに確認したいこと
LEDが光らない場合は、プログラムだけでなく、配線や部品の向きも確認します。
LEDの向きは合っているか
LEDは向きが逆だと光りません。
長い足がプラス側、短い足がマイナス側です。
今回の回路では、長い足を抵抗側、短い足をGND側へつなぎます。
GPIO番号を間違えていないか
この記事では、GPIO23を使っています。
物理ピン番号では16番です。
Pythonのプログラムでは、次のようにBCM指定をしています。
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.OUT)物理ピン番号の16ではなく、GPIO番号の23を使っている点に注意します。
GNDにつながっているか
LEDの短い足側は、GNDへつなぎます。
この記事では、物理ピン番号6のGNDを使っています。
抵抗を入れているか
LEDには必ず抵抗を入れます。
抵抗なしで直接つなぐと、LEDやRaspberry Piを壊してしまう可能性があります。
実行しているファイルは合っているか
IDLEで別のファイルを開いている場合、思っているプログラムと違うファイルを実行していることがあります。
保存したファイル名や、実行しているウィンドウを確認します。
まとめ
Raspberry Pi Zero WHで、Python3を使ってLEDを点滅させるLチカを試しました。
今回行った流れは、次の通りです。
- ブレッドボードにLEDと抵抗を配置する
- GPIO23から抵抗を通してLEDの長い足へつなぐ
- LEDの短い足をGNDへつなぐ
- Python3(IDLE)でプログラムを書く
led01.pyとして保存する- Run Moduleで実行する
- LEDが0.5秒ごとに点滅することを確認する
Lチカはシンプルですが、Raspberry Piの電子工作の基本がぎゅっと詰まっています。
GPIOから信号を出して、LEDが実際に光ると、プログラムと電子部品がつながった感じがして楽しいです。
次は、Scratchを使ってLEDを点滅させてみます。

スマホからLEDを操作する記事はこちらです。

ラズベリーパイで使う電子部品はこちらにまとめています。

ラズベリーパイで電子工作を始めるための機材はこちらです。

制作ノート全体はこちらです。


