注釈
こんにちは、SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Communityへようこそ!Facebook上で、仲間と一緒にRaspberry Pi、Arduino、ESP32をさらに深く探求しましょう。
なぜ参加するのか?
専門的なサポート:購入後の問題や技術的な課題をコミュニティやチームの助けを借りて解決。
学びと共有:スキルを向上させるためのヒントやチュートリアルを交換。
限定プレビュー:新製品発表や予告編に早期アクセス。
特別割引:最新製品の特別割引を楽しむ。
フェスティブプロモーションとプレゼント:プレゼントやホリデープロモーションに参加。
👉 私たちと一緒に探索と創造を始める準備はできましたか?[ここ]をクリックして、今すぐ参加しましょう!
レッスン33: サーボモーター (SG90)
このレッスンでは、Raspberry Piを使用してサーボモーターを制御する方法を学びます。サーボのパルス幅設定を調整して精密に制御し、Pythonスクリプトを作成してサーボを最小、中間、最大の位置に移動させる方法を学びます。
必要なコンポーネント
このプロジェクトでは、以下のコンポーネントが必要です。
全てが揃ったキットを購入すると便利です。リンクはこちらです:
Name |
ITEMS IN THIS KIT |
LINK |
---|---|---|
Universal Maker Sensor Kit |
94 |
以下のリンクから個別に購入することもできます。
Component Introduction |
Purchase Link |
---|---|
Raspberry Pi 5 |
- |
配線
コード
from gpiozero import Servo
from time import sleep
# GPIO pin for the servo
myGPIO = 17
# Correction factor for the servo
myCorrection = 0.45
maxPW = (2.0 + myCorrection) / 1000 # Maximum pulse width
minPW = (1.0 - myCorrection) / 1000 # Minimum pulse width
# Initialize the servo with adjusted pulse width range
servo = Servo(myGPIO, min_pulse_width=minPW, max_pulse_width=maxPW)
# Continuously move servo between positions
while True:
# Move servo to middle position
servo.mid()
print("mid")
sleep(0.5)
# Move servo to minimum position
servo.min()
print("min")
sleep(1)
# Move servo to middle position
servo.mid()
print("mid")
sleep(0.5)
# Move servo to maximum position
servo.max()
print("max")
sleep(1)
コード解析
ライブラリのインポート
gpiozero``からサーボ制御用の ``Servo
クラスと、タイミング用のtime
からsleep
をインポートします。from gpiozero import Servo from time import sleep
GPIOピンとサーボ補正係数の設定
サーボに接続されたGPIOピンを定義し、サーボのパルス幅範囲をキャリブレーションするための補正係数を設定します。
myGPIO = 17 myCorrection = 0.45 maxPW = (2.0 + myCorrection) / 1000 minPW = (1.0 - myCorrection) / 1000
サーボの初期化
指定されたGPIOピンと調整されたパルス幅範囲を使用して
Servo
オブジェクトを作成します。servo = Servo(myGPIO, min_pulse_width=minPW, max_pulse_width=maxPW)
サーボを連続的に移動
``while True``ループを使用して、サーボを最小、中間、および最大の位置間で移動させ、現在の位置を表示し、移動間にポーズを入れます。
while True: servo.mid() print("mid") sleep(0.5) servo.min() print("min") sleep(1) servo.mid() print("mid") sleep(0.5) servo.max() print("max") sleep(1)