発行済み 2026-03-25
このような状況に遭遇したことがありますか?サーボあなたが購入したものは一方向にしか回転できなかったり、いくつかの固定角度でしか停止できず、スムーズな前後スイング効果をまったく実現できませんか?心配しないでください。これは実際には問題ではありません。サーボそれ自体はそうですが、私たちが書いたプログラムは十分に「スマート」ではありません。今日は、数行の簡単なコードを使用して、サーボ本当に自由に前後に回転するので、あなたの小さな発明が瞬時に機敏になります。
ステアリングギアが一定の角度で正確に停止できるのは、内部モーターと角度フィードバックシステムによるものです。簡単に言うと、PWM 信号 (つまり、パルス幅変調信号) を受信することによって、どの位置に移動したいかを決定します。通常、信号周期は 20 ミリ秒、ハイ レベル時間は 0.5 ~ 2.5 ミリ秒で、0 ~ 180 度の角度範囲に対応します。このロジックを理解すると、プログラムを作成するときに「ハンドル」をマスターしたことになります。サーボを回転させたい場合は、対応する信号値をサーボに送信するだけです。
このタイプの開発ボードを使用して制御する場合、複雑なパルス時間を自分で計算する必要はなく、既製のライブラリ関数を呼び出すだけです。たとえば、書く()で機能するサーボ.hライブラリ、書くだけで十分です.write(90)とサーボが90度の位置に回転します。したがって、前後に自由に回転させたい場合、中心となるのは、指定された範囲内でこの角度の値を繰り返し変更することです。
プログラミングが初めての場合は、最も基本的な「前後の動き」から始めることができます。まず変数を使用して現在の角度を保存し、次に角度を 0 度から開始して 180 度まで増加するまで毎回 1 度ずつ増加させ、その後毎回 1 度ずつ減少させて 0 度に戻し、完全な前後のスイング サイクルを完了します。ここで適切な遅延を追加することに注意してください。そうしないと、サーボが速く回転しすぎて、けいれんしているように見えます。
実際の動作では、コード構造は非常に単純です。最初にサーボ ピンを定義します。設定()関数を作成し、次に 2 つ書きますのためにループインループ()関数。 1 つのループは角度を増加させ、もう 1 つのループは角度を減少させます。各ループ呼び出し.write(角度)社内で協力し、遅延(15)回転速度を制御します。このように書くと効果はサーボが振り子のように滑らかに前後回転するということです。
多くの友人は、プログラムを作成するときに、速度制御という 1 つの詳細を見落とす傾向があります。サーボの回転を遅くしたい場合は、次のように長い遅延を追加できます。遅延(30)、角度を変更するたびに動きますが、これにより全体の動きが遅れて見えるようになります。より良い方法は、毎回角度の増分を減らすことです。たとえば、毎回角度を 1 度から 0.5 度に変更します。これにより、サーボの動きの軌跡がより繊細になり、メカ的にもより美しく見えます。
角度範囲も完全にあなた次第です。必ずしも 0 から 180 度まで回転する必要はなく、90 度から 120 度の間で前後に回転させることができます。これは、ロボット アームや小さな装飾品などの特定のアプリケーション シナリオで特に役立ちます。開始値と終了値を変更するだけですのためにループなどfor(angle=45; angle 、サーボが 45 ~ 135 度の間で往復運動するようにします。
サーボを勝手に前後に回転させるだけではクールではありません。外部制御を追加できれば、さらに興味深いでしょう。ボタンを接続してサーボを押すと前後に回転し、もう一度押すと現在の角度で停止します。または、超音波センサーを使用して目の前の物体を検出し、物体が近づくと自動的にスイング動作をトリガーします。このようにして、「こんにちは」と言う対話型デバイスを作成できます。
この機能はプログラムにいくつかの判定条件を追加するだけで実現できます。まずセンサーデータを読み取り、そのデータ値に基づいてサーボの往復周期を実行するかどうかを決定します。ここでちょっとした裏技をご紹介します。プログラムがループにはまり込むのを避けるために、サーボの回転を関数にカプセル化してから、もしメインループ内の条件を使用して、この関数を呼び出すかどうかを決定します。このようにして、メインプログラムはセンサーの読み取りとサーボ制御を相互に干渉することなく同時に処理できます。
実際のデバッグでは、サーボが振れたり、一定の角度で動かなくなったりする場合があります。これは通常、電力供給が不十分なことが原因で発生します。サーボの始動時および方向転換時の瞬時電流は比較的大きくなります。開発ボード上の 5V ピンのみから電源が供給されている場合、電圧の不安定が発生しやすくなります。解決策も非常に簡単です。 1.5V バッテリー 4 個や 5V 2A 電源アダプターなどの外部電源を探します。プラス極とマイナス極をそれぞれサーボの赤と茶色のワイヤーに接続します。同時に、開発ボードの GND と電源の GND を接続して、信号の基準電圧が一定になるようにします。
もう 1 つの状況は、プログラムに十分な遅延が追加されていないことです。直後に角度値を変更すると、書く()とサーボが指定位置に到達する前に新たな指令を受けると、変なピクピク感が発生します。サーボがアクションを完了するのに十分な時間を確保できるように、角度を変更するたびに少なくとも 15 ~ 20 ミリ秒の待機時間を残します。これが、前に追加する必要があると述べた理由です。遅れループへ。
前後に回転する基本をマスターしたら、さらに興味深い組み合わせを試すことができます。たとえば、サーボを LED ライトと連携させて、特定の角度に回転するとさまざまな色のライトが点灯するようにします。または、2 つのサーボを使用して単純な機械アームを形成し、同期または交互のスイングを実現します。これらのアイデアは、スマート ホーム ガジェット、子供のおもちゃの改造、またはアート インスタレーションに使用して、製品の楽しさと双方向性を即座に向上させることができます。
さらに、回転モードとタイミングを保存して「アクションライブラリ」を作成し、携帯電話のBluetoothまたは赤外線リモコンを使用してさまざまなスイングモードを呼び出すこともできます。これにより、作品は単なる機械的な動きの繰り返しではなく、シーンに応じてさまざまな動作姿勢を示す可変的な「表現」を持ち、ユーザーに豊かな体験を提供します。
サーボを使用して取り組んでいる興味深い小規模プロジェクトは何ですか?人々を怒らせるようなプログラミングの問題に遭遇したことがありますか?コメント エリアであなたのストーリーを共有することを歓迎します。または、「Shenzhen Hengxing Micro Motor」を直接検索して、より実用的なステアリング ギア制御ソリューションとソース コード リファレンスを入手して、次のアイデアをよりスムーズに実装できるようにしてください。
更新時間:2026-03-25