注釈
こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。
Why Join?
エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。
学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。
独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。
特別割引:最新製品の独占割引をお楽しみください。
祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。
👉 私たちと一緒に探索し、創造する準備はできていますか?[here]をクリックして今すぐ参加しましょう!
サーボとモーターの制御
このプロジェクトでは、12個のサーボと2つのモーターが同時に動作します。

ただし、サーボやモーターの始動電流が高い場合は、それらを個別に起動して、電源電流不足を避けることをお勧めします。電流不足はRaspberry Piの再起動につながる可能性があります。
コード
from robot_hat import Servo, Motors
import time
# Create objects for 12 servos
servos = [Servo(f"P{i}") for i in range(12)]
# Create motor object
motors = Motors()
def initialize_servos():
"""Set initial angle of all servos to 0."""
for servo in servos:
servo.angle(-90)
time.sleep(0.1) # Wait for servos to reach the initial position
time.sleep(1)
def sweep_servos(angle_from, angle_to, step):
"""Control all servos to sweep from a start angle to an end angle."""
if angle_from < angle_to:
range_func = range(angle_from, angle_to + 1, step)
else:
range_func = range(angle_from, angle_to - 1, -step)
for angle in range_func:
for servo in servos:
servo.angle(angle)
time.sleep(0.05)
def control_motors_and_servos():
"""Control motors and servos in synchronization."""
try:
while True:
# Motors rotate forward and servos sweep from -90 to 90 degrees
motors[1].speed(80)
time.sleep(0.01)
motors[2].speed(80)
time.sleep(0.01)
sweep_servos(-90, 90, 5)
time.sleep(1)
# Motors rotate backward and servos sweep from 90 to -90 degrees
motors[1].speed(-80)
time.sleep(0.01)
motors[2].speed(-80)
time.sleep(0.01)
sweep_servos(90, -90, 5)
time.sleep(1)
except KeyboardInterrupt:
# Stop motors when Ctrl+C is pressed
motors.stop()
print("Motors stopped.")
# Initialize servos to their initial position
initialize_servos()
# Control motors and servos
control_motors_and_servos()