2.11 ノブを回してみよう

以前のプロジェクトでは、Pico Wのデジタル入力を使用していました。 たとえば、ボタンでピンのレベルを低(オフ)から高(オン)に変えることができます。これはバイナリの動作状態です。

しかし、Pico Wは別のタイプの入力信号、すなわちアナログ入力も受け取ることができます。 完全に閉じている状態から完全に開いている状態まで、様々な値をとることができます。 アナログ入力により、マイクロコントローラは物理世界の光強度、音強度、温度、湿度などを感知することができます。

通常、マイクロコントローラにはアナログ入力を実装するための追加ハードウェア、すなわちアナログ-デジタルコンバータ(ADC)が必要です。 しかし、Pico W自体にはADCが組み込まれているので、直接使用することができます。

pin_adc

Pico Wにはアナログ入力が使用できるGPIOピンが3つあります:GP26、GP27、GP28。つまり、アナログチャンネル0、1、2です。 さらに、内蔵温度センサに接続された第4のアナログチャンネルもありますが、ここでは紹介しません。

このプロジェクトでは、ポテンショメータのアナログ値を読み取ることに挑戦します。

必要なコンポーネント

このプロジェクトでは、以下のコンポーネントが必要です。

全体のキットを購入することは確かに便利です、以下がそのリンクです:

名前

このキットに含まれるアイテム

リンク

ケプラーキット

450以上

Kepler Kit

下記のリンクから別々にも購入することができます。

SN

コンポーネント

数量

リンク

1

Raspberry Pi Pico W

1

BUY

2

Micro USBケーブル

1

3

ブレッドボード

1

BUY

4

ジャンパーワイヤー

数本

BUY

5

抵抗器

1(220Ω)

BUY

6

LED

1

BUY

7

ポテンショメーター

1

BUY

回路図

sch_pot

ポテンショメータはアナログデバイスであり、2つの異なる方向に回転させることができます。

ポテンショメータの中央のピンをアナログピンGP28に接続します。Raspberry Pi Pico Wは、マルチチャネル、16ビットのアナログ-デジタルコンバータを搭載しています。これにより、入力電圧が0から動作電圧(3.3V)の間で0から65535の整数値にマッピングされます。したがって、GP28の値の範囲は0から65535です。

計算式は以下の通りです。

(Vp/3.3V) x 65535 = Ap

次に、GP28(ポテンショメータ)の値をGP15(LED)のPWM値としてプログラムします。 これにより、ポテンショメータを回転させると、LEDの明るさも同時に変化することがわかります。

配線

wiring_pot

コード

注釈

  • kepler-kit-main/micropython のパスの下にある 2.11_turn_the_knob.py ファイルを開くか、このコードをThonnyにコピーして、"Run Current Script"をクリックするかF5キーを押して実行します。

  • 右下隅にある"MicroPython(Raspberry Pi Pico)"インタプリタをクリックするのを忘れないでください。

  • 詳細なチュートリアルは、 コードを直接開いて実行する を参照してください。

import machine
import utime

potentiometer = machine.ADC(28)
led = machine.PWM(machine.Pin(15))
led.freq(1000)

while True:
    value = potentiometer.read_u16()
    print(value)
    led.duty_u16(value)
    utime.sleep_ms(200)

プログラムが動作しているとき、シェルでGP28ピンが現在読み取っているアナログ値を確認できます。 ノブを回すと、その値は0から65535に変化します。 同時に、アナログ値が増加するにつれて、LEDの明るさも増加します。

動作原理は?

potentiometer = machine.ADC(28)

この例では、idによって識別されたソースに関連付けられたADCにアクセスします。この場合、それはGP28です。

potentiometer.read_u16()

アナログ読み取りを行い、0〜65535の範囲の整数を返します。返り値は、ADCによって取られた生の読み取り値を表し、最小値が0で最大値が65535になるようにスケーリングされています。