RXduino  1.20a
RXduinoマニュアル 最終更新日 平成26年6月29日
関数
tkdn_servo.h

一般的なサーボモータを制御するためのルーチン [詳細]

#include "tkdn_hal.h"

ソースコードを見る。

関数

int servo_attach (servo_t *servo, int pin, int min, int max)
 サーボライブラリの初期化と、任意のピンへの割り当て [詳細]
 
void servo_write (servo_t *servo, int angle)
 指定された角度に相当する幅のパルスをサーボモータに送る [詳細]
 
void servo_write_us (servo_t *servo, int us)
 指定された時間の幅のパルスをサーボモータに送る [詳細]
 
int servo_read (servo_t *servo)
 最後に設定された角度を読み出す [詳細]
 
void servo_detach (servo_t *servo)
 サーボの動作を止め、割り込みを禁止する [詳細]
 

説明

一般的なサーボモータを制御するためのルーチン

一般的に、サーボモータと呼ばれる部品は、電源、GNDのほかに「制御入力」と呼ばれる信号を持ち、 このライブラリはRX62N/RX63Nの内蔵MTUを6個使い、20チャネルのサーボを同時に制御します。

この信号に与えられたパルスの幅に応じた角度で静止します。
ごく一般的なサーボモータではパルスの周期は20msで、与えるパルスの幅が544usの場合に角度は0°となり、 パルスの幅が2400usの場合に角度は180°となります。角度とパルス幅の関係は自由に設定でき、 パルス幅が長ければながいほど回転角度が大きくなります。
このライブラリをC++で使いやすくしたものが servo.h で定義される Servo クラスです。

覚え書き
RX62N対応。(V1.04)

tkdn_servo.h で定義されています。

関数

int servo_attach ( servo_t *  servo,
int  pin,
int  min,
int  max 
)

サーボライブラリの初期化と、任意のピンへの割り当て

最初に呼び出されたとき、MTUを初期化する。
回転角を0°にしたいときのパルス幅を引数 min で与え、180°にしたいときのパルス幅を引数 max で与える。
同じ番号のピンを指定して二回以上呼び出すと、そのピンに関してminとmaxの値が変更される。
異なる番号のピンを指定して呼び出すと、新しいサーボチャネルが割り当てられる。(最大20個まで)

引数
[in]servo初期化したいサーボ構造体へのポインタ
pinサーボ信号を出力したいピン番号。指定するピンはライブラリ内部で 出力モードに変更されるので、 gpio_set_pinmode() 関数で出力にしておかなくてもよい。
min角度を0°にしたいときのON時間(単位 us)
max角度を180°のときのON時間(単位 us)
戻り値
成功したらサーボのチャネル番号(0~19)を返す。 失敗したら-1を返す。
覚え書き
20個以上のピンにサーボを割り当てようとすると失敗する
ライブラリの次のバージョンではサーボ構造体は廃止される予定
minとmaxの両方に同じ値を入れるか、minに負の値を設定すると、デフォルト値(min=544,max=2400)が採用される
void servo_write ( servo_t *  servo,
int  angle 
)

指定された角度に相当する幅のパルスをサーボモータに送る

この関数を呼び出すと、指定された回転角になるような幅のパルスが、
servo_attach() 関数で指定したピンから出力される。

引数
[in]servoサーボ構造体へのポインタ
angle静止させたい角度 (0-180の範囲)
戻り値
なし
覚え書き
ライブラリの次のバージョンではサーボ構造体は廃止される予定
void servo_write_us ( servo_t *  servo,
int  us 
)

指定された時間の幅のパルスをサーボモータに送る

この関数を呼び出すと、出力パルスの幅を角度ではなく時間で指定できる。
パルスは servo_attach() 関数で指定したピンから出力される。

引数
[in]servoサーボ構造体へのポインタ
us出力したいパルスの幅をus単位で指定する。範囲は1~19999。
0を指定すると出力はOFFになる。
戻り値
なし
覚え書き
ライブラリの次のバージョンではサーボ構造体は廃止される予定
int servo_read ( servo_t *  servo)

最後に設定された角度を読み出す

引数
[in]servoサーボ構造体へのポインタ
戻り値
servo_write() 関数で指定した角度
覚え書き
ライブラリの次のバージョンではサーボ構造体は廃止される予定
void servo_detach ( servo_t *  servo)

サーボの動作を止め、割り込みを禁止する

目的のチャネルのサーボ動作を停止し、割り込みを禁止する。
指定されたピンのみ停止し、他のピンの動作には影響を与えない

引数
[in]servoサーボ構造体へのポインタ
戻り値
なし
覚え書き
ライブラリの次のバージョンではサーボ構造体は廃止される予定