10 Arduino サーボモータを接続
この記事では、Arduino にサーボモータを接続します。
サーボモータはラジコン飛行機に搭載されています。翼の動翼やエンジンのスロットル制御などに使われ、最近はロボットの関節制御に使われています。
サーボモータからは、電源・グランド・パルス入力の3線が出ており、パルス入力線のパルス幅により、出力軸の角度制御を行います。パルス幅が狭ければ0°,中位なら90°,広ければ180°という動作をします。
この記事の例では、以下の仕様のサーボモータを使用しています。
- パルス幅 0.5ms で回転角 0°、
- パルス幅 1.5ms で回転角 90°、
- パルス幅 2.5ms で回転角 180°
- パルスの繰り返し周期は 20ms
今回サーボモータ・パルス入力線はlピン9に接続しました。
スケッチ内容
スケッチ内容を示します。
Arduino IDE には、サーボモータを扱うライブラリが標準で組み込まれているので、このスケッチでも利用しています。このライブラリは以下の手順で使用します。
- #include <Servo.h> :
ライブラリの利用を宣言します。 - Servo myservo :
servo object を作成します。
複数個のサーボを使用するときはこのobject名で区別します。 - myservo.attach(9) :
サーボを接続するPin番号を設定します。 - myservo.write(pos) :
出力軸の角度コマンドを送ります。
// サーボモータを駆動する // 2021-6-3 #include <Servo.h> Servo myservo; // servo object を作成 void setup() { myservo.attach(9); // pin 9 にサーボを接続 } void loop() { // 0 -> 180度に向け1°ずつ回転動作させる for (int pos = 0; pos <= 180; pos += 1) { myservo.write(pos); // コマンドを送る delay(15); // 動作時間の確保 } // 180 -> 0度に向け1°ずつ回転動作させる for (int pos = 180; pos >= 0; pos -= 1) { myservo.write(pos); // コマンドを送る delay(15); // 動作時間の確保 } }
使用した Arduino命令
今回使用したArduino関連の命令の簡単な説明とその日本語レファレンスの掲載されているリンクを紹介します。
- attach(pin)
サーボ変数をピンに割り当てます。 - write(angle)
サーボの角度をセットし、シャフトをその方向に向けます。
angle: サーボに与える値(0から180)
次回は、超音波距離計を接続します。