相生コンピュータークラブ第4-4回~Raspberry Pi Picoに接続したLEDの明るさを変えよう~
Raspberry Pi Pico(らずべりーぱいぴこ)を使ったマイコンプログラミングは、今回が4回目です。オンボードのLEDではなく、外部にLEDを接続して点灯させます。
Contents
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)を接続するシリーズです。ディスプレイがつくと、マイコンとのコミュニケーションを取りやすくなりますね。
また、キットの残りデバイスをはんだ付けします。お楽しみに。