サーボモーター(Servoクラス)
サーボモーターを制御するライブラリです。最大20個のチャネルを割り当てられます。
使用する場合は、ライブラリとしてインポートして、#include <servo.h>を記述してください。
Servo servo0;といったようにインスタンスを生成する必要があります。(サンプルプログラムを参照)
attach
概要 |
初期化して、出力を任意のピンに割り当てます。 |
文法 |
servo.attach(int pin)servo.attach(int pin, int min, int max) |
パラメータ |
pin: ピン番号min: サーボの角度が0度のときのパルス幅[us]。デフォルトは544。max: サーボの角度が180度のときのパルス幅[us]。デフォルトは2400。 |
戻り値 |
なし |
write
概要 |
サーボの角度をセットして、シャフトをその方向に向けます。指定された回転角にするためのパルスがattachで指定したピンから出力されます。 |
文法 |
servo.write(int angle) |
パラメータ |
analog: 静止させたい角度(0~180) |
戻り値 |
なし |
writeMicroseconds
概要 |
サーボモータに与える出力をマイクロ秒単位で角度指定します。サーボモータに与えられるパルスは20ms周期で、1周期中のHigh時間を直接しています。 |
文法 |
servo.writeMicroseconds(int us) |
パラメータ |
us: 出力したいパルス幅[us]。範囲は1~19999。0を指定すると出力OFF。 |
戻り値 |
なし |
read
概要 |
最後に設定された角度(パルス幅)を読み出す。ただしwriteMicrosecondsで与えた値は読み出せません。 |
文法 |
int servo.read() |
パラメータ |
なし |
戻り値 |
パルス幅[us] |
attached
概要 |
ピンにサーボが割り当てられているかを確認する |
文法 |
bool servo.attached() |
パラメータ |
なし |
戻り値 |
割り当てられているときtrue、割り当てられていないときfalse。 |
detach
概要 |
サーボモータの動作を止めます。指定ピンからのパルス出力を止めます。 |
文法 |
servo.detach() |
パラメータ |
なし |
戻り値 |
なし |
サンプルプログラム
サーボモータを操作するピンを9にして、SAKURAボード上のスイッチを押すとモータが回転するサンプルです。
#include <rxduino.h>
#include <servo.h>
#define INTERVAL 50
char g_inc = 10;
unsigned char g_pos = 0;
Servo servo0;
void setup()
{
pinMode(PIN_SW, INPUT);
servo0.attach(9);
servo0.write(g_pos);
}
void loop() {
if(digitalRead(PIN_SW) == LOW){
g_pos = g_pos + g_inc;
servo0.write(g_pos);
if(g_pos == 180 | g_pos == 0){
g_inc = g_inc * -1;
}
}
delay(INTERVAL);
}