Maker Pi RP2040にモータと可変抵抗をつないで回転数を変更できるようにしてみました。
まず、Maker Pi RP2040のMoter1にモータ、Grove6に可変抵抗を接続します。
なお、可変抵抗はADC接続となり、RP2040ではADC接続はGP26, GP27, GP28のPinのみとなっているので、Maker Pi RP2040のGrove端子としてはGrove5, Grove6, Grove7のいずれかに接続する必要があります。
接続した全体図
可変抵抗 10KΩ(Bカーブ)
ワニ口⇔ジャンパケーブルオスーオス⇔Groveケーブル(Maker Pi RP2040付属品)で接続
※クリップ同士は接触しないように注意!!です。
まず、通常の方法でMicroPythonのファームウェアをセットアップします。
ファームウェアセットアップする際には、microUSB端子の横にある電源をONにしておきます。
設定方法は下記のURLに記載されています。
URL: https://www.raspberrypi.org/documentation/rp2040/getting-started/#getting-started-with-micropython
当ブログでは下記の記事に記載しています。
次に、開発環境の設定していない場合は設定します。
当ブログでは下記の記事に記載しています。
準備が整ったらUSBケーブルをコンピューターに接続します。
おそらく、BOOTSELボタンを押しながら起動するのは初期設定のときのみで、
普段は普通の接続で大丈夫そうです。
Thonnyを起動し、インタプリタとして「MicroPython(Raspberry Pi Pico)」を選択します。
これは、右下のボックスをクリックして行うことができます。
プログラムですが、モータを動かすプログラムについては下記にサンプルプログラムが用意されており、こちらを変更して作成していきます。
URL: MAKER-PI-RP2040/Examples/MicroPython/Motors/DC_Motor.py
まず、モータのみ動かすプログラムを下記のように作成しました。
import machine
import utime
# Setup DC Motor pins
M1A = machine.PWM(machine.Pin(8))
M1B = machine.PWM(machine.Pin(9))
M1A.freq(50)
M1B.freq(50)
Speed = 0.5
while True:
M1A.duty_u16(0) # Duty Cycle must be between 0 until 65535
M1B.duty_u16(int(Speed * 65535))
utime.sleep(1)
次に、可変抵抗のみを動かすプログラムを作成します。
下記のプログラムは Get Started with MicroPython on Raspberry Pi Pico の Chapter 8 の P94より引用しています。
可変抵抗の値はMicroPythonでは16ビット(0~65535(2^16-1))の範囲の数値に変換されます。
import machine
import utime
potentiometer = machine.ADC(27)
while True:
print(potentiometer.read_u16())
utime.sleep(2)
最後に、上記の2つのプログラムを組み合わせて、モータのスピードを可変抵抗で変更する下記のプロづラムを作成します。
import machine
import utime
# Setup DC Motor pins
M1A = machine.PWM(machine.Pin(8))
M1B = machine.PWM(machine.Pin(9))
potentiometer = machine.ADC(27)
M1A.freq(50)
M1B.freq(50)
while True:
Speed = potentiometer.read_u16()
M1A.duty_u16(0) # Duty Cycle must be between 0 until 65535
M1B.duty_u16(int(Speed))
utime.sleep(1)
プログラムを実行して可変抵抗を回すとこんな感じで動きます。
コメント