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