注釈
こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。
参加する理由は?
エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。
学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。
独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。
特別割引:最新製品の独占割引をお楽しみください。
祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。
👉 私たちと一緒に探索し、創造する準備はできていますか?[ここ]をクリックして今すぐ参加しましょう!
1.3.2 サーボ
はじめに
このプロジェクトでは、サーボを回転させる方法を学びます。
必要なコンポーネント
このプロジェクトでは、以下のコンポーネントが必要です。
回路図
実験手順
ステップ1: 回路を組み立てます。
ステップ2: コードのフォルダに移動します。
cd ~/davinci-kit-for-raspberry-pi/python-pi5
ステップ3: 実行可能ファイルを実行します。
sudo python3 1.3.2_Servo.py
プログラムが実行されると、サーボは0度から90度、180度まで回転し、次に180度から90度、0度まで回転します。これが繰り返されます。
コード
注釈
以下のコードは変更/リセット/コピー/実行/停止ができます。ただし、コードを変更する前に davinci-kit-for-raspberry-pi/python-pi5 のようなソースコードのパスに移動する必要があります。コードを変更した後、直接実行して効果を確認できます。
#!/usr/bin/env python3
from gpiozero import Servo
from time import sleep
# サーボモーターを接続するGPIOピン番号を設定
myGPIO = 18
# サーボのパルス幅を微調整するための補正係数を定義し、それを使用して最大および最小パルス幅を計算します
myCorrection = 0.45
maxPW = (2.0 + myCorrection) / 1000 # 最大パルス幅を計算
minPW = (1.0 - myCorrection) / 1000 # 最小パルス幅を計算
# カスタムパルス幅でサーボオブジェクトを初期化
servo = Servo(myGPIO, min_pulse_width=minPW, max_pulse_width=maxPW)
try:
while True:
# サーボを中央に位置させて待機
servo.mid()
print("mid") # 現在の位置を表示
sleep(0.5) # 0.5秒の一時停止
# サーボを最小位置に移動させて待機
servo.min()
print("min") # 現在の位置を表示
sleep(1) # 1秒間位置を保持
# サーボを中央の位置に戻して待機
servo.mid()
print("mid") # 現在の位置を表示
sleep(0.5) # 0.5秒の一時停止
# サーボを最大位置に移動させて待機
servo.max()
print("max") # 現在の位置を表示
sleep(1) # 1秒間位置を保持
except KeyboardInterrupt:
# キーボード割り込み(Ctrl+C)でスクリプトを正常に終了する
pass
コードの説明
これらのインポート文は、サーボ制御のための
Servoクラスとタイミングのためのsleep関数を取り込みます。#!/usr/bin/env python3 from gpiozero import Servo from time import sleep
サーボモーターを接続するためのGPIOピン番号を18に設定します。
# サーボモーターが接続されているGPIOピン番号を設定します myGPIO = 18
これらの行は、補正係数を定義し、それを使用してサーボの最大および最小パルス幅を計算します。これにより、サーボの動きの範囲を微調整できます。
# サーボのパルス幅を微調整するための補正係数を定義し、最大パルス幅と最小パルス幅を計算します myCorrection = 0.45 maxPW = (2.0 + myCorrection) / 1000 # 最大パルス幅を計算 minPW = (1.0 - myCorrection) / 1000 # 最小パルス幅を計算
カスタムパルス幅でサーボオブジェクトを初期化します。
# カスタムパルス幅でサーボオブジェクトを初期化します servo = Servo(myGPIO, min_pulse_width=minPW, max_pulse_width=maxPW)
tryブロックには、サーボを連続的に動かすためのwhile Trueループが含まれています。サーボは中間位置、最小位置、最大位置に配置され、各位置が表示され、指定された期間保持されます。try: while True: # サーボを中間位置に配置し、待機 servo.mid() print("mid") # 現在の位置を表示 sleep(0.5) # 0.5秒の短い休憩 # サーボを最小位置に移動し、待機 servo.min() print("min") # 現在の位置を表示 sleep(1) # 1秒間位置を保持 # サーボを中間位置に戻し、待機 servo.mid() print("mid") # 現在の位置を表示 sleep(0.5) # 0.5秒の短い休憩 # サーボを最大位置に移動し、待機 servo.max() print("max") # 現在の位置を表示 sleep(1) # 1秒間位置を保持 except KeyboardInterrupt: # キーボード割り込み(Ctrl+Cなど)でスクリプトを正常に終了します pass