質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

768閲覧

ラズパイでRPi.GPIOを使ってモーターを回転させるプログラムをpigpioを使うように変更したところ、モーターが回転しなくなった。

Aki1000

総合スコア78

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2023/02/14 19:09

編集2023/02/14 19:15

Raspberry Piを使ってモーターを動かすコードを書きました。
以下のように、RPi.GPIOを使って制御するときは問題なくモーターが動くのですが、

Python

1import RPi.GPIO as GPIO 2from time import sleep 3 4# Set up pins 5MotorPin1 = 17 6MotorPin2 = 27 7MotorEnable = 22 8 9GPIO.setmode(GPIO.BCM) 10 11GPIO.setup(MotorPin1, GPIO.OUT) 12GPIO.setup(MotorPin2, GPIO.OUT) 13GPIO.setup(MotorEnable, GPIO.OUT) 14 15pwm = GPIO.PWM(MotorEnable, 100) 16 17##dutycycle 0% 矩形波を出力 18pwm.start(0) 19 20try: 21 while True: 22 #forward 23 dcycle = 100 24 GPIO.output(MotorPin1, True) 25 GPIO.output(MotorPin2, False) 26 pwm.ChangeDutyCycle(dcycle) 27 GPIO.output(MotorEnable, True) 28 sleep(2) 29 30 #stop 31 GPIO.output(MotorPin1, False) 32 GPIO.output(MotorPin2, False) 33 sleep(2) 34 35 #reverse 36 dcycle = 50 37 GPIO.output(MotorPin1, False) 38 GPIO.output(MotorPin2, True) 39 pwm.ChangeDutyCycle(dcycle) 40 GPIO.output(MotorEnable, True) 41 sleep(2) 42 43 #stop 44 GPIO.output(MotorPin1, False) 45 GPIO.output(MotorPin2, False) 46 sleep(2) 47 48 pwm.stop() 49 GPIO.cleanup() 50 51except KeyboardInterrupt: 52 pwm.stop() 53 GPIO.cleanup() 54 print("KeyboardInterrupt") 55

これを下記のようにpigpioに変更したところ、モーターが動かなくなりました。
ただ、動きはしないのですが、モーターを前転あるいは後転させる命令部分でモーターから音とかすかな震動がしているので、命令が行っていないという訳では無いようです。
おそらく、下記のコードのうち、GPIO.set_PWM_dutycycle(MotorEnable, dcycle)がモーターを動かすのに適していない命令なのではないかと思うのですが、どう直して良いか分かりません。

よろしくお願いします。

Python

1import pigpio 2from time import sleep 3 4# Set up pins 5MotorPin1 = 17 6MotorPin2 = 27 7MotorEnable = 22 8 9GPIO = pigpio.pi() 10GPIO.set_mode(MotorPin1, pigpio.OUTPUT) 11GPIO.set_mode(MotorPin2, pigpio.OUTPUT) 12GPIO.set_mode(MotorEnable, pigpio.OUTPUT) 13 14try: 15 while True: 16 #forward 17 dcycle = 100 18 GPIO.write(MotorPin1, 1) 19 GPIO.write(MotorPin2, 0) 20 GPIO.set_PWM_dutycycle(MotorEnable, dcycle) 21 22 sleep(2) 23 24 #stop 25 GPIO.write(MotorPin1, 0) 26 GPIO.write(MotorPin2, 0) 27 sleep(2) 28 29 #reverse 30 dcycle = 50 31 GPIO.write(MotorPin1, 0) 32 GPIO.write(MotorPin2, 1) 33 GPIO.set_PWM_dutycycle(MotorEnable, dcycle) 34 sleep(2) 35 36 #stop 37 GPIO.write(MotorPin1, 0) 38 GPIO.write(MotorPin2, 0) 39 sleep(2) 40 41except KeyboardInterrupt: 42 print("KeyboardInterrupt")

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

thkana

2023/02/14 22:51

pigpiodは起動していますか?
Aki1000

2023/02/15 00:33

起動しています。起動しないと実行時に警告が出てプログラム動かないので。 pigpioを使ってのLチカは出来てます。
guest

回答1

0

ベストアンサー

pigpioでのduty比の範囲はGPIOと異なりデフォルトでは0~255なので、そのままコードを移植すると弱めになってそのような動作になっていると思われます。set_PWM_rangeで範囲を変えることができるので、100を指定すると同じ動作になると思います。

投稿2023/02/15 01:08

can110

総合スコア38262

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Aki1000

2023/02/15 13:05

ありがとうございました。 問題なく動くようになりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問