top of page

Maker Pi RP2040とスイッチ2つでスイッチを押したときだけモータを正転・逆転するようにしてみました。

更新日:2022年6月18日

Maker Pi RP2040とスイッチ2つでスイッチを押したときだけモータを正転・逆転するようにMicroPythonでプログラミングしてみました。

今回はイッチはGrove1とGrove2にモータはMoter1に接続しました。


接続した全体図


スイッチ

スイッチのプルアップ接続とプルダウン接続の2通りありますが、今回は2つともプルダウンで接続しています。

スイッチはマルツで購入しました。抵抗は参考にしたページには10kΩ程度とありましたが、手持ちになかったため100kΩを使用しています。

※クリップ同士は接触しないように注意!!です。


(補足) プルアップ接続とプルダウン接続

・プルアップ接続: ONが0, OFFが1になる接続で下記のような接続となります。

・プルダウン接続: ONが1, OFFが0になる接続で下記のような接続となります。


まず、通常の方法でMicroPythonのファームウェアをセットアップします。

ファームウェアセットアップする際には、microUSB端子の横にある電源をONにしておきます。

設定方法は下記のURLに記載されています。


当ブログでは下記の記事に記載しています。


次に、開発環境の設定していない場合は設定します。

当ブログでは下記の記事に記載しています。


準備が整ったら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)


プログラムを実行するとこんな感じで動きます。



今回参考にしたページ

スイッチについて

モータのサンプルプログラム

閲覧数:7回

Comments


bottom of page