今回は、マイコン初心者の方にもピッタリな “LEDを点滅させる” 超定番実験、通称「Lチカ(LEDチカチカ)」を、Raspberry Pi Pico+MicroPythonで一緒にやってみましょう。マイコンを手にして「何をすればいいのか分からない…」という方も、安心してください。配線からコードまで、一歩ずつ丁寧に進めていきます。
完成イメージ
まずは実際にどういう動きをするかイメージしておきましょう。LED(発光ダイオード)がゆっくり点灯・消灯を繰り返して「チカチカ」します。
視覚的にパチッと反応があるので、初めての電子工作でも手応えを感じやすい実験です。
配線図・準備
次に、PicoとLEDをどう接続すればいいか解説します。
準備するもの
- Raspberry Pi Pico本体
- ブレッドボード(あれば便利)
- ジャンパー線(Pico → LED)
- LED(発光ダイオード)
- 抵抗(330 Ω~1 kΩ程度)
- USBケーブル(PicoとPCをつなぐため)
配線手順
- Picoをブレッドボードに挿して固定します。
- LEDの長い足(アノード)を、Picoの GPIO15(今回は15番ピン)に接続します。
- LEDの短い足(カソード)を抵抗を通して、Picoの GND(グラウンド)端子に接続します。
- PicoをPCにUSB接続して、MicroPythonが動くように準備します。



ソースコード(MicroPython)
さあ、コードを書いていきます。まずは極めてシンプルな例から始めて、段階的にバージョンアップしていきましょう。
STEP1: LED点灯→消灯→点灯→消灯
from machine import Pin
from time import sleep
led = Pin(15, Pin.OUT) # GPIO15を出力に設定
led.value(1)
sleep(0.5)
led.value(0)
sleep(0.5)
led.value(1)
sleep(0.5)
led.value(0)
sleep(0.5)
- from machine import Pin:PicoのGPIO操作用クラスを読み込み。
- from time import sleep:指定秒数だけ一時停止する関数。
- led = Pin(15, Pin.OUT):GPIO15を「出力モード」に設定し、 led という変数で操作します。
- led.value(1):LEDを「点灯」します(回路によっては 0 が点灯の場合もあるので確認してください)。
- sleep(0.5):0.5秒待ちます。
- 以下、点灯/消灯を交互に行っています。
「点灯→消灯→点灯→消灯」で、LEDが2回“チカッ”と光るイメージです。
STEP2 永久ループ
from machine import Pin
from time import sleep
led = Pin(15, Pin.OUT)
while True:
led.value(1)
sleep(0.5)
led.value(0)
sleep(0.5)
- while True::無限ループを作ります。条件が常に True なので、ずっと先を繰り返します。
- 中の処理で、点灯 → 0.5秒待ち → 消灯 → 0.5秒待ち、というサイクルを回しています。
- つまり、LEDが永遠に「点灯・消灯・点灯・消灯…」を繰り返します。
初めて電源を入れて動かすなら、これが最も分かりやすい「Lチカ」パターンです。
STEP3 togle()を使ってみる
from machine import Pin
from time import sleep
led = Pin(15, Pin.OUT) # GPIO15を出力に設定
while True:
led.toggle()
sleep(0.5)
- led.toggle():現在の出力状態を反転させるメソッドです。
→点灯中なら消灯に、消灯中なら点灯に。 - これにより、 value(1)/value(0) を交互に書く必要がなく、コードがシンプルになります。
コードが少し短くなって見やすくなりましたね。
STEP4 マジックナンバー解消・定数化
LED_PIN_NUM = 15 # 使用するGPIOピン番号
SLEEP_SECONDS = 0.5 # 点滅間隔(秒)
from machine import Pin
from time import sleep
led = Pin(LED_PIN_NUM, Pin.OUT)
while True:
led.toggle()
sleep(SLEEP_SECONDS)
LED_PIN_NUM、SLEEP_SECONDS といった定数をコード冒頭にまとめることで、
「ピン番号を変えたい」 「点滅速度を変えたい」
という変更がコードの複数箇所を探す必要なく、一か所を直せば済みます。
直書きの数字(=マジックナンバー)を排除することで、メンテナンス性が向上します。
ワンポイントコメント
- 配線はしっかり確認しましたか?LEDの脚の向き、大丈夫?
- 抵抗はちゃんと付けていますか?マイコンを壊さないためにも必須です。
- sleep(0.5) の “0.5秒”は体感で「ゆっくりチカチカ」くらいです。もっと早くしたいなら 0.1 にしてみましょう。
- toggle() を使うとコードがすっきりします。ハマるポイントは「現在の状態が何か?」を気にしなくて良くなるところ。
- 定数化(マジックナンバー脱却)は「この値、どこで変えたらいいんだっけ…?」を防ぐスグレ技です。
もう少し深掘り
抵抗の値
一般にLEDを制御する際、電流制限抵抗を必ず挟みます。たとえばPicoの出力ピンからLEDに流せる電流は限られています。330 Ω〜1 kΩをおすすめします。抵抗値が小さすぎるとLEDが明るすぎて消費電流が増え、Pico自身に負荷がかかります。
ピン15の特徴
GPIO15はPico上の一般的な汎用出力ピンです。PWMや他の特殊機能を使わなければ、LEDのオン/オフ制御には十分な能力を持っています。ただし、プロジェクトによってはPWM対応ピンを別に使うこともあります。
コード詳細解説 (1行ずつ深掘り)
from machine import Pin
この一行で、PicoのGPIO(General Purpose Input/Output)を制御するための Pin クラスを使えるようにします。
from time import sleep
時間を止める sleep() 関数を使うための読み込み。MicroPythonでは utime モジュールを使うことも多いですが、互換性重視ならこのままでもOK。
LED_PIN_NUM = 15
SLEEP_SECONDS = 0.5
“どのピンを使うか”“点滅の間隔はどれくらいか”を変数(定数)として定義。後から変えたくなったときに、とても便利です。
led = Pin(LED_PIN_NUM, Pin.OUT)
指定したピンを「出力モード」に設定。LEDを光らせるためには「出力」にしなければいけません。
while True:
led.toggle()
sleep(SLEEP_SECONDS)
無限ループで、LEDの状態を反転(ON→OFF→ON→…)し、指定秒数だけ待つ。
ここが「チカチカ」の核心部分です。CPUがこのループを回り続けて、LEDの点滅を実現しています。
まとめ
配線が正しく、コードもシンプルに書ければ、自分で「光らせた!」という実感が得られます。
そして、「マジックナンバーを定数化する」「toggleで状態を反転する」などの工夫は、より大きなプロジェクトへ展開する際に必須のスキルになります。今回のLチカはその土台です。
ぜひ、まずはここまでのコードを実際に動かして、LEDが思った通りに動くことを確認してみてください。
「光った!」「消えた!」その瞬間に、思わず「できた!やった!」 ガッツポーズしているでしょう。
それでは、楽しいマイコンライフを!また次のステップで会いましょう
次回予告
以下の作り方を次回解説します。
自分でもどうやってつくるのか考えてみましょう。
コメント