Skip to content

Day 6|微調整:アナログな「曖昧さ」を知る

  • 可変抵抗(ボリュームつまみ) を配線する
  • Picoでアナログ値(0〜65535) を読み取る
  • つまみに合わせて、LEDの明るさを滑らかに変える

スポンサーリンク(開発中はプレースホルダー)

NO IMAGE
Raspberry Pi Pico Hピンヘッダ付き
NO IMAGE
ブレッドボード標準サイズ
NO IMAGE
赤色LED5mm砲弾型
NO IMAGE
抵抗器 330Ω橙橙黒金
NO IMAGE
可変抵抗器ボリュームつまみ
NO IMAGE
ジャンパーワイヤオス-オス
  • Day 2のLED回路
  • 可変抵抗器(ポテンショメーター) ×1
    • ※つまみがついた3本足の部品

つまみを右に回すとLEDが明るくなり、左に回すと暗くなります。 オーディオのボリューム調節と同じ仕組みを作ります。

可変抵抗には足が3本あります。 「両端」と「真ん中」で役割が違います。

  1. 可変抵抗をブレッドボードに挿す。
  2. 左の足 → 3V3(プラス)
  3. 右の足 → GND(マイナス)
    • ※左右は逆でもいいですが、回転方向が変わります。
  4. 真ん中の足GP26 (ADC0)
    • ※ここから「分圧された電圧」を取り出します。

Step 2: ADC(アナログ・デジタル変換)

Section titled “Step 2: ADC(アナログ・デジタル変換)”

Picoはコンピュータなので「デジタル(0か1)」しか理解できません。 しかし現実世界は「明るい/暗い」「熱い/寒い」などグラデーション(アナログ)です。 ADC は、このグラデーションを「数値(0〜65535)」に翻訳してくれる通訳者です。

import machine
import 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)

⚠️ 数値がふらつく / 触ってないのに変わる

  • 原因: 配線の接触不良
    • → ブレッドボード上で足が浮いていませんか?
  • 仕様: ノイズ
    • → アナログ値は非常に繊細です。完全にピタッと止まることは稀で、多少パラパラと数値が変わるのは正常です(空気中のノイズなどを拾っています)。
  • アナログ: スロープ(坂道)。どこまでも滑らか。
  • デジタル: 階段。一段一段が決まっている。
  • ADC: 坂道を「お前はいま1段目、いま2段目…」と数値化して階段にする係。

「0と1の間の『無限の世界』を数値化した!」

入力(センサー)と出力(LED)が繋がりました。 次はいよいよ、ロボット工作の華「動く関節」を作ります。