Raspberry Pico Lチカ(MicroPython)

code


今回は、マイコン初心者の方にもピッタリな “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が思った通りに動くことを確認してみてください。

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

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

    次回予告

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

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

    コメント