メインコンテンツに移動

サーボモーター(Servoクラス)

サーボモーター(Servoクラス)

サーボモーターを制御するライブラリです。最大12個のチャネルを割り当てられます。
使用する場合は、#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()

パラメータ

なし

戻り値

なし


サンプルプログラム

サーボモータを操作するピンを4にして、0.5秒ごとに10°ずつ回転するサンプルです。


        #include <Arduino.h>
        #include <servo.h> 
            
        #define INTERVAL 500
        unsigned char g_pos = 0;
        Servo servo0;
            
        void setup() 
        { 
            servo0.attach(4);
        } 
            
        void loop() {
            servo0.write(g_pos);
            g_pos+=10;
            if(g_pos > 180){
                    g_pos = 0;
            }
            delay(INTERVAL);
        }