RXduino
1.20a
RXduinoマニュアル 最終更新日 平成26年6月29日
|
一般的なサーボモータを制御するためのルーチン [詳細]
#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 クラスです。
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) |
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 | サーボ構造体へのポインタ |
void servo_detach | ( | servo_t * | servo | ) |
サーボの動作を止め、割り込みを禁止する
目的のチャネルのサーボ動作を停止し、割り込みを禁止する。
指定されたピンのみ停止し、他のピンの動作には影響を与えない
[in] | servo | サーボ構造体へのポインタ |