最終更新:2012-11-30 (金) 04:27:21 (4164d)  

Arduino/Servo
Top / Arduino / Servo

このライブラリはサーボモータ?をコントロールします。標準的なサーボでは0から180度の範囲でシャフトの位置(角度)を指定します。連続回転(continuous rotation)タイプの場合は、回転スピードを設定します。

Arduino-0017から、ServoライブラリはほとんどのArduinoボードで最大12個のサーボをサポートします。Arduino Megaにおいては最大48個です。 Mega以外のボードでは、ピン9と10のPWM機能が無効になります。Megaでは、12個までならPWM機能に影響せず、それ以上のサーボを使う場合はピン11と12のPWMが無効になります。

Arduino 0016以前のServoライブラリはハードウエアに依存していて、ピン9と10にだけサーボを接続することができました(Arduino Megaでは機能しませんでした)。サーボを1つしか使用しない場合でも、空いているほうのピンをanalogWritePWM出力に使うことはできず、ピン9をサーボ、ピン10をPWM出力といった組み合わせには対応していませんでした。

#include <Servo.h>

Servo servo;//サーボのインスタンス

void setup(){
  //サーボの信号線を3番ピンに接続
  //(PWMピン以外のピンにも接続可)
  servo.attach(3);
}

void loop(){
  //センサの読み取り値
  int val=analogRead(0);
  //map()を使って0~1023のセンサ読取り値を0~180の角度に変換
  int deg=map(val,0,1023,0,180);
  //サーボ出力
  servo.write(deg);//0~180まで
}

参考