ラズベリーパイのGPIOによるPythonの事で下記コードです
py3
1import RPi.GPIO as GPIO 2from time import sleep 3 4# ポート番号やサーボモーターの情報を指定 5SV_PORT = 2 6 7SW1_PORT = 20 8SW2_PORT = 21 9 10SV_FREQ = 50 # 20ms(50Hz) 11SV_DUTY_OFFSET = 0.025 12SV_DUTY_RES = (2.4 - 0.5) / 20 / 180 13 14# GPIOの設定 15GPIO.setmode(GPIO.BCM) 16GPIO.setup(SV_PORT , GPIO.OUT) # サーボモーターの設定 17GPIO.setup([SW1_PORT , SW2_PORT], 18GPIO.IN, 19pull_up_down=GPIO.PUD_DOWN) # ボタンの設定 20 21# PWMを利用する準備 22servo = GPIO.PWM(SV_PORT, SV_FREQ) 23servo.start(0) 24sleep(0.3) 25 26# サーボの角度を計算し変更する関数 27def set_angle(angle): 28if angle < -90: angle = -90 29if angle > 90: angle = 90 30degree = (angle + 90) 31duty = (SV_DUTY_OFFSET + SV_DUTY_RES * degree) * 100 32print("angle=",angle,"duty=", int(duty)) 33servo.ChangeFrequency(SV_FREQ) 34servo.ChangeDutyCycle(duty) 35 36# ボタンに応じてサーボの角度を変える 37angle = 0 38set_angle(angle) 39while True: 40try: 41# ボタンの状態を監視 42if GPIO.input(SW1_PORT) == GPIO.HIGH: 43angle -= 10 44set_angle(angle) 45if GPIO.input(SW2_PORT) == GPIO.HIGH: 46angle += 10 47set_angle(angle) 48sleep(0.1) 49except KeyboardInterrupt: 50break 51 52GPIO.cleanup()
今現在1軸のみでスイッチ1またはスイッチ2を押すとサーボが動く現状で4軸ある場合のコードの書き方をおしえてください。
現状4軸あるので個々に全て手動スイッチを用いて動かしたいのが目的です。わかるかたいればよろしくお願いします。
Pythonはインデントで構造が決まるので、teratailへはコード用の入力をした方が良いと思います。shit+@で`が入力できるのですが、```Python(改行)```の形でコード用に表示できます。
たまにはコードかいていただけますか?かいてくれないと先に進みません
コード中のインデントが消えているようです(最低限構文エラーの出ないコードを提示ください)
同時に4個サーボを動かしたいわけではないです。ロボットなので動かすときは1軸だけで動けばいいので
この欄は「質問への追記・修正、ベストアンサー選択の依頼」のためにあります。補足情報などがある場合は、分かりやすいように質問本文を修正ください。
低評価つける前にコードかけよ。できねーやつが評価するな!!