Maker Pi RP2040とスイッチ2つでスイッチを押したときだけモータを正転・逆転するようにMicroPythonでプログラミングしてみました。
今回はイッチはGrove1とGrove2にモータはMoter1に接続しました。
接続した全体図
スイッチ
スイッチのプルアップ接続とプルダウン接続の2通りありますが、今回は2つともプルダウンで接続しています。
スイッチはマルツで購入しました。抵抗は参考にしたページには10kΩ程度とありましたが、手持ちになかったため100kΩを使用しています。
※クリップ同士は接触しないように注意!!です。
(補足) プルアップ接続とプルダウン接続
・プルアップ接続: ONが0, OFFが1になる接続で下記のような接続となります。
・プルダウン接続: ONが1, OFFが0になる接続で下記のような接続となります。
まず、通常の方法でMicroPythonのファームウェアをセットアップします。
ファームウェアセットアップする際には、microUSB端子の横にある電源をONにしておきます。
設定方法は下記のURLに記載されています。
URL: https://www.raspberrypi.org/documentation/rp2040/getting-started/#getting-started-with-micropython
当ブログでは下記の記事に記載しています。
次に、開発環境の設定していない場合は設定します。
当ブログでは下記の記事に記載しています。
準備が整ったらUSBケーブルをコンピューターに接続します。
おそらく、BOOTSELボタンを押しながら起動するのは初期設定のときのみで、
普段は普通の接続で大丈夫そうです。
Thonnyを起動し、インタプリタとして「MicroPython(Raspberry Pi Pico)」を選択します。
これは、右下のボックスをクリックして行うことができます。
プログラムですが、今回は下記のプログラム作成して実行しました。 from machine import Pin,PWM
import utime
sw1 = Pin(3,Pin.IN)
sw2 = Pin(5,Pin.IN)
M1A = machine.PWM(machine.Pin(8))
M1B = machine.PWM(machine.Pin(9))
M1A.freq(50)
M1B.freq(50)
Speed = 0.3
while True:
Value1 = sw1.value()
Value2 = sw2.value()
if Value1 == 1 and Value2 == 0:
M1A.duty_u16(0)
M1B.duty_u16(int(Speed * 65535))
utime.sleep(1)
elif Value1 == 0 and Value2 == 1:
M1A.duty_u16(int(Speed * 65535))
M1B.duty_u16(0)
utime.sleep(1)
else:
M1A.duty_u16(0)
M1B.duty_u16(0)
utime.sleep(1)
プログラムを実行するとこんな感じで動きます。
今回参考にしたページ
スイッチについて
モータのサンプルプログラム
Comments