ラズベリーパイの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されてはじめて動くコードを知りたいのです。
あなたの回答
tips
プレビュー