1. 今日やること
- 可変抵抗(ボリュームつまみ) を配線する
- Picoでアナログ値(0〜65535) を読み取る
- つまみに合わせて、LEDの明るさを滑らかに変える
スポンサーリンク(開発中はプレースホルダー)
2. 使う部品
- Day 2のLED回路
- 可変抵抗器(ポテンショメーター) ×1
- ※つまみがついた3本足の部品
3. 完成形(今日のゴール)
つまみを右に回すとLEDが明るくなり、左に回すと暗くなります。 オーディオのボリューム調節と同じ仕組みを作ります。
4. 手順
Step 1: 可変抵抗を配線する
可変抵抗には足が3本あります。 「両端」と「真ん中」で役割が違います。
- 可変抵抗をブレッドボードに挿す。
- 左の足 → 3V3(プラス)
- 右の足 → GND(マイナス)
- ※左右は逆でもいいですが、回転方向が変わります。
- 真ん中の足 → GP26 (ADC0)
- ※ここから「分圧された電圧」を取り出します。
Step 2: ADC(アナログ・デジタル変換)
Picoはコンピュータなので「デジタル(0か1)」しか理解できません。 しかし現実世界は「明るい/暗い」「熱い/寒い」などグラデーション(アナログ)です。 ADC は、このグラデーションを「数値(0〜65535)」に翻訳してくれる通訳者です。
5. コード
# 出力:LED(PWMで明るさ調整)
led = machine.PWM(machine.Pin(15))
led.freq(1000)
# 入力:可変抵抗(ADCで数値読み取り)
# GP26はADCの0番チャンネルです
pot = machine.ADC(0)
while True:
# 1. つまみの値を読む(0 〜 65535)
value = pot.read_u16()
# 2. 読んだ値をそのままLEDの明るさにする
led.duty_u16(value)
# 確認用:PCの画面に数値を出す
print(value)
time.sleep(0.1)
6. つまずきログ
⚠️ 数値がふらつく / 触ってないのに変わる
- 原因: 配線の接触不良
- → ブレッドボード上で足が浮いていませんか?
- 仕様: ノイズ
- → アナログ値は非常に繊細です。完全にピタッと止まることは稀で、多少パラパラと数値が変わるのは正常です(空気中のノイズなどを拾っています)。
7. 文系への翻訳
- アナログ: スロープ(坂道)。どこまでも滑らか。
- デジタル: 階段。一段一段が決まっている。
- ADC: 坂道を「お前はいま1段目、いま2段目…」と数値化して階段にする係。
8. 今日の達成
「0と1の間の『無限の世界』を数値化した!」
9. 次へ
入力(センサー)と出力(LED)が繋がりました。 次はいよいよ、ロボット工作の華「動く関節」を作ります。