相生コンピュータークラブ第4-4回~Raspberry Pi Picoに接続したLEDの明るさを変えよう~

Raspberry Pi Pico(らずべりーぱいぴこ)を使ったマイコンプログラミングは、今回が4回目です。オンボードのLEDではなく、外部にLEDを接続して点灯させます。

Raspberrypi PicoにLEDを接続して点灯させる

RaspberryPi Pico(ラズPico)単体でできることは、わずかしかありません。ラズPicoに40本のピンをはんだ付けしたのは、外部にデバイスを接続するためです。外部デバイスを接続することで、ラズPicoでできることが無尽蔵に増えます。

まずはかんたんなLEDの点灯から。

かんたんとは言っても、初めてブレッドボードを触るメンバーにとっては、おっかなびっくりかもしれません。わかりやすいように実体配線図を用意して、そのとおりに組み上げます。

そして小学校で学習した、豆電球の実験を思い出しながら説明します。「LEDと豆電球の違い」「絶対にやっちゃいけないショート(短絡)」「LEDの足の長さの違い」などなど。

「豆電球に電池2つを直列につないだらどうなる?」という問い掛けに、「豆電球が壊れるからやっちゃだめって言われた」といい回答がありました。はなしが長くなるので、詳しいところまで突っ込みませんでした。しかし、なにか変化があることを感覚的に知っていることが大事です。

電気は物理現象なので、身近なモノの動きから類推できます。その感覚を理論に落としていけば理解できます。小中学生のうちは、感覚を磨くほうが大事。

さて、出来た回路はこちら。

タクトスイッチを押したときだけLEDが光ります。

タクトスイッチを連打するのと同じプログラムをつくる

わたしたちがタクトスイッチを連打しても、LEDは100%点灯したり、100%消灯(0%点灯)したりを繰り返すように見えます。では、プログラムで高速にONとOFFを切り替えたらどうなるでしょうか?

回路を組み替えて、以下のプログラムを組みます。

from machine import Pin, PWM
import time

INTERVAL_TIME = 0.005 #点滅間隔時間
led = PWM(Pin(16))  # GPIO16にPWMを設定
led.freq(1000)      # 1kHzに設定

while True:
    for duty in range(0, 65536, 256):  # 徐々に明るく
        led.duty_u16(duty)
        time.sleep(INTERVAL_TIME)
    for duty in range(65535, -1, -256):  # 徐々に暗く
        led.duty_u16(duty)

これくらいのプログラムなら、あっという間に入力し終えてしまいます。だいたい半年程度、きちんと練習していれば小学生でも問題なくPythonでプログラミングできます。

まだまだやります、はんだ付け

教材として使っている共立エレショップのラズPicoキットは、わたしがはじめてラズPicoを学習したキットです。1個目は、さんざん弄り倒して、壊して捨てました。

その経験を踏まえて、メンバーには「使いやすい状態で、長く使ってほしい」ので、オリジナルの改良を加えます。もちろんはんだ付けです。

プログラムを組み終えたメンバーから、40箇所のはんだ付けを行います。待っているメンバーは、AIを使ってプログラムを改良します。

さて、はんだ付けはうまくいくかなあと、横でじっと見ていたら、まあうまいのなんの。

一つだけ気になったのは、はんだがなかなか融けずに苦労していたことです。これは、ハンダごてにはんだを当てることを意識すれば解決です。

そしてもう一度、はんだ付けの基本動作の確認です。

  • はんだ付けする部分に、ハンダごてをあてて温める
  • 温めた部分に、はんだを送り込む(溶けて短くなるので、連続して送り込む)
  • 適量のはんだがとけたところで、はんだを送り込むのをやめる
  • はんだが馴染むまで、ハンダごてを当て続ける
  • はんだが馴染んだら、ハンダごてを離す

あとは練習あるのみ!

次回、新シリーズ「ラズPicoにディスプレイを接続しよう」

次回から、ラズPicoに小さなディスプレイ(SSD1306)を接続するシリーズです。ディスプレイがつくと、マイコンとのコミュニケーションを取りやすくなりますね。

また、キットの残りデバイスをはんだ付けします。お楽しみに。