Raspberry Pico Lチカ(MicroPython)

MicroPython


今回は、マイコン初心者の方にもピッタリな “LEDを点滅させる” 超定番実験、通称「Lチカ(LEDチカチカ)」を、Raspberry Pi Pico+MicroPythonで一緒にやってみましょう。マイコンを手にして「何をすればいいのか分からない…」という方も、安心してください。配線からコードまで、一歩ずつ丁寧に進めていきます。

完成イメージ

まずは実際にどういう動きをするかイメージしておきましょう。LED(発光ダイオード)がゆっくり点灯・消灯を繰り返して「チカチカ」します。

視覚的にパチッと反応があるので、初めての電子工作でも手応えを感じやすい実験です。

配線図・準備


次に、PicoとLEDをどう接続すればいいか解説します。

準備するもの

  • Raspberry Pi Pico本体
  • ブレッドボード(あれば便利)
  • ジャンパー線(Pico → LED)
  • LED(発光ダイオード)
  • 抵抗(330 Ω~1 kΩ程度)
  • USBケーブル(PicoとPCをつなぐため)

配線手順

  1. Picoをブレッドボードに挿して固定します。
  2. LEDの長い足(アノード)を、Picoの GPIO15(今回は15番ピン)に接続します。
  3. LEDの短い足(カソード)を抵抗を通して、Picoの GND(グラウンド)端子に接続します。
  4. PicoをPCにUSB接続して、MicroPythonが動くように準備します。
ピコさん
ピコさん
LEDを直接Picoにつなぐと壊れる可能性があります。必ず適切な抵抗を入れてくださいね

ソースコード(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_NUMSLEEP_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が思った通りに動くことを確認してみてください。

「光った!」「消えた!」その瞬間に、思わず「できた!やった!」 ガッツポーズしているでしょう。

それでは、楽しいマイコンライフを!また次のステップで会いましょう

次回予告

以下の作り方を次回解説します。

自分でもどうやってつくるのか考えてみましょう。

コメント