2011-03-21

Arduinoでリモコン その3

今回はサーボを動かします。
サーボモーターは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 件のコメント: