サーボモーターはPWMで制御されます。ArduinoのanalogWrite(xx)コマンドを使えば簡単にPWM出力する事ができます。
----------------------------------------------------------
void setup(){
pinMode(3,OUTPUT);
}
void loop(){
int val=analogRead(0)/4; // (0~1023)/4
analogWrite(3,val); // (0~255)
delay(20);
}----------------------------------------------------------但しこのPWM周波数はサーボモータにしては500KHz(幅2msec)と早いのでうまく動くものと動かない物があります(実験済み)。動いてもジーッと言う音がしてドライブしっぱなしなのでサーボ自体が熱くなります。analogWriteは使わない方が良さそうです。
次に試したのがライブラリにServoを使う方法です。これはばっちりです。但しここに書いてある様にArduinoの標準的なPWMがいくつか使えなくなっています。調べたところ5番と6番のみ使えます。サンプルスケッチです。
-----------------------------------------------------------
#include
Servo servo;
void setup() {
servo.attach(3);
}
void loop(){
float val=analogRead(0)*180.00/1023;
servo.write(int(val));
delay(20);
Servo::refresh();
}-----------------------------------------------------------サーボを動かすにはばっちりなんですが、IrCtrlライブラリと相性が合いません。一緒にincludeするとコンパイルエラーになりますので、この方法もダメ。
ではどうするか・ ・ ・は次回。
0 件のコメント:
コメントを投稿