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

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

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

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

Q&A

0回答

2091閲覧

スイッチでサーボモータを動かす

COCCOP

総合スコア6

Python 3.x

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

0グッド

1クリップ

投稿2017/12/14 07:32

編集2018/01/10 12:08

ラズベリーパイのGPIOを用いてスイッチを押したらはじめてサーボモータが動くソースコードが知りたいです。
色々検索しても、RUN後すぐサーボが動くようなコードばかりしかなくて困っています。
入力は一応プルダウン回路を組んで動かそうと思います。

希望としては自動/手動切替のセレクトSWで選択して
自動側にした場合、スタートスイッチを押して、はじめてサーボが1サイクル動くコードの書き方(90度いったらー90度にいって止まる的な?)
手動側にした場合、JOG運転がしたいので+側のボタンを押したら+側に動作し、ー側のボタンを押したらー側に動作するコードの書き方

とりあえずは入力されるまでサーボが動かないコードを知りたいのでわかるかたいれば教えてください。

import RPi.GPIO as GPIO
import time

1サイクル自動化サブルーチンコード

GPIO.setmode(GPIO.BCM)
gp_out = 2
GPIO.setup(gp_out, GPIO.OUT)
servo = GPIO.PWM(gp_out, 50)
servo.start(0.0)
servo.ChangeDutyCycle(2.0)
time.sleep(1)
GPIO.cleanup()

GPIO.setmode(GPIO.BCM)
gp_out = 4
GPIO.setup(gp_out, GPIO.OUT)
servo = GPIO.PWM(gp_out, 50)
servo.start(0.0)
servo.ChangeDutyCycle(6.5)
time.sleep(1)
GPIO.cleanup()

GPIO.setmode(GPIO.BCM)
gp_out = 2
GPIO.setup(gp_out, GPIO.OUT)
servo = GPIO.PWM(gp_out, 50)
servo.start(0.0)
servo.ChangeDutyCycle(6.0)
time.sleep(1)
GPIO.cleanup()

GPIO.setmode(GPIO.BCM)
gp_out = 4
GPIO.setup(gp_out, GPIO.OUT)
servo = GPIO.PWM(gp_out, 50)
servo.start(5.0)
time.sleep(1)
servo.ChangeDutyCycle(0.0)
time.sleep(1)
GPIO.cleanup()

GPIO.setmode(GPIO.BCM)
gp_out = 3
GPIO.setup(gp_out, GPIO.OUT)
servo = GPIO.PWM(gp_out, 50)
servo.start(0.0)
servo.ChangeDutyCycle(4.9)
time.sleep(1)
GPIO.cleanup()

GPIO.setmode(GPIO.BCM)
gp_out = 14
GPIO.setup(gp_out, GPIO.OUT)
servo = GPIO.PWM(gp_out, 50)
servo.start(0.0)
servo.ChangeDutyCycle(11.0)
time.sleep(1)
GPIO.cleanup()

GPIO.setmode(GPIO.BCM)
gp_out = 4
GPIO.setup(gp_out, GPIO.OUT)
servo = GPIO.PWM(gp_out, 50)
servo.start(0.0)
time.sleep(2)
servo.ChangeDutyCycle(7.3)
time.sleep(1)
GPIO.cleanup()

GPIO.setmode(GPIO.BCM)
gp_out = 2
GPIO.setup(gp_out, GPIO.OUT)
servo = GPIO.PWM(gp_out, 50)
servo.start(0.0)
servo.ChangeDutyCycle(2.5)
time.sleep(2)
GPIO.cleanup()

GPIO.setmode(GPIO.BCM)
gp_out = 4
GPIO.setup(gp_out, GPIO.OUT)
servo = GPIO.PWM(gp_out, 50)
servo.start(4.0)
time.sleep(2)
servo.ChangeDutyCycle(7.5)
time.sleep(0.03)
GPIO.cleanup()

GPIO.setmode(GPIO.BCM)
gp_out = 3
GPIO.setup(gp_out, GPIO.OUT)
servo = GPIO.PWM(gp_out, 50)
servo.start(0.2)
time.sleep(2)
servo.ChangeDutyCycle(2.5)
time.sleep(2)
GPIO.cleanup()

GPIO.setmode(GPIO.BCM)
gp_out = 14
GPIO.setup(gp_out, GPIO.OUT)
servo = GPIO.PWM(gp_out, 50)
servo.start(0.0)
servo.ChangeDutyCycle(5.2)
time.sleep(2)
GPIO.cleanup()

GPIO.setmode(GPIO.BCM)
gp_out = 2
GPIO.setup(gp_out, GPIO.OUT)
servo = GPIO.PWM(gp_out, 50)
servo.start(0.0)
servo.ChangeDutyCycle(6.0)
time.sleep(2)
GPIO.cleanup()

今、RUNを押した瞬間から1サイクル自動で動いてしまうので、とりあえずは入力の検知がONされてはじめて動くコードを知りたいのです。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2017/12/14 10:25

今実装できていないにしても、できている範囲のコードを載せた方が回答が得られます。
COCCOP

2017/12/14 11:22

この程度の質問でコードかけない人しかいないんならもぉ結構です
退会済みユーザー

退会済みユーザー

2017/12/14 21:39

「書けない」のではなくて、わざと「書かない」のです。
COCCOP

2018/01/10 12:24

自分はPLC制御の仕事してますが低評価をつける前に最低限動くレベルのプログラムを書いてあげるのがソフト屋だと思います。
退会済みユーザー

退会済みユーザー

2018/01/10 13:14 編集

3点。まず私はプロフィールにある通りソフト屋ではありません。「書いてあげる」正直理解できません、時々見かけますが皆様売り上げのために質問したり回答しているわけではありません。動かないなりにもアルゴリズムの断片や試したことの汲み取れるアウトプットができるのがエンジニアだと私は思います。最後、コードが書かれましたので私の分のマイナス評価は解除します。時間がありましたら質問の内容を確認しますし、少しでも詳しい方に見てもらえるように+1します。
COCCOP

2018/01/10 14:46

正直言いますと全ては結果なのでできなければ返事はいらないです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問