RCサーボで遊ぼう

ArduinoのServo libraryを使えば、簡単にRCサーボの回転軸をコントロールできます。ここでは、Servo libraryの使い方を理解し、RCサーボを駆動することに挑戦します。(Servo libraryのページはこちらです)

RCサーボとは

RCサーボのRCはRadio Control、つまりラジコンの略です。車のラジコンでステアリングやスロットルの動作に使用されているモータです。回転軸の角度を計測するセンサやコントローラが内蔵されており、比較的簡単にモータの回転角を制御できます。最近では小型のロボットなどにも使用されています。

RCサーボの駆動方法

今回使用するRCサーボは、GWSサーボのS03T/2BBMG/JRタイプです。
images/rc_servo_gws_s03t_2bbmg_jr.jpg

一般的なRCサーボには端子が3つあります。今回使用するRCサーボの端子配列は、茶:GND、赤:電源正極、オレンジ:制御パルス入力です。

ArduinoにRCサーボを接続しよう

必要な部品など

  1. Arduino Duemilanove 328
  2. RCサーボ(S03T/2BBMG/JRタイプ)

接続図

下の接続図を参考にして、ArduinoとRCサーボを接続しましょう。コードの色に注意すること。図では黒:GND、赤:電源正極、黄:制御パルス入力となっていますが、実物では茶:GND、赤:電源正極、オレンジ:制御パルス入力となります。電源はプログラムを書き込んだ後に接続しましょう。
images/rc_servo_sample1.png

プログラムを書こう

ArduinoにRCサーボを接続したら、RCサーボの回転軸を180度正転逆転させるためのArduinoのプログラム(下のrc_servo_sample1)を、Arduino IDEを使って書きましょう。


// rc_servo_sample1

#include <Servo.h>

Servo myservo;

int pos = 0;

void setup() {
  myservo.attach( 9 );
}

void loop() {
  for ( pos = 0; pos < 180; pos += 1 ) {
    myservo.write( pos );
    delay( 15 );
  }
  for ( pos = 180; pos > 0; pos -= 1 ) {
    myservo.write( pos );
    delay( 15 );
  }
}
			

RCサーボの動きを確認しよう

Arduinoにプログラムを転送したら、RCサーボに電源を接続して、動作を確認しましょう。for文における変数posの増減量を変えて、RCサーボの動作速度を変更してみよう。

プログラムを理解しよう

ArduinoのプログラムでServo libraryを利用するためには、まず


#include <Servo.h>
			
と記述する必要があります。

つぎに、myservoという名前のServoオブジェクトを宣言しています。


Servo myservo;
			

int型変数のposには、RCサーボに指令する回転軸の回転角を格納します。単位は度です。


int pos = 0;
			

つぎの関数setup()の中では、関数attach()を使用して、myservoで制御するRCサーボへの制御パルスを出力するArduinoのピンを指定しています。


void setup() {
  myservo.attach( 9 );
}
			

そして関数loop()の中で、2つのfor文を使って、RCサーボの回転軸を、まず0度から180度まで正転させ、その後180度から0度まで逆転させています。


void loop() {
  for ( pos = 0; pos < 180; pos += 1 ) {
    myservo.write( pos );
    delay( 15 );
  }
  for ( pos = 180; pos > 0; pos -= 1 ) {
    myservo.write( pos );
    delay( 15 );
  }
}
			
Servoオブジェクトの関数write(angle)を使って、回転軸を回転させたい角度をRCサーボに指令しています。

課題

ボリュームを回転させると、その回転角度に合わせてRCサーボの回転軸が回転するような、Arduinoのプログラムを作成しましょう。

Referenceへのリンク


back to "Arduino Tutorial"