サーボモーターは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 件のコメント:
コメントを投稿