Retired Colourman

何度も朝がやってくる

Arduinoでサーボモーターを扱う(スピード調整)

追記 2015/12/25

github.com

コレ使ってくれ。頼む。READMEに書いてあるの見ればわかるとは思うけど、簡単に速度調整できる。delayでゴニョゴニョする必要とかない。

#include <VarSpeedServo.h> 

VarSpeedServo myservo;    // インスタンス作成

void setup() {
  myservo.attach(9);  // サーボのピンを9番に接続 
} 

void loop() {
  myservo.write(180, 30, true);        //180度まで速度30で移動。動きが完了するまで待つ。
  myservo.write(0, 30, true);        // 0度まで速度30で移動。動きが完了するまで待つ。
}

これを見ているみんながなんのOSを使ってるのかしらないので なんとも言えないけど、多分Arduino IDEを起動してメニューから skectch > Import Library > Add Libraryでライブラリを追加できる。Zipファイルが必要になるので、上のライブラリのGithubレポジトリのページでDownload Zipボタンをクリックすればzipファイル手に入るから。簡単。

昔書いた適当なエントリーをいつまでも見られ続けるの本当に苦痛だ…

Arduinoでのサーボモーターの扱い方

Arduinoサーボモーターを使う時にはServo.hを使うととても便利です。

サンプルコード

#include <Servo.h> #ヘッダーのインクルード

Servo servo; //サーボのインスタンス

void setup(){
  servo.attach(3); //サーボの信号機を3番ピンに接続
}
 
void loop(){
  servo.write(90); //サーボを90°の角度に
  delay(1000);  //一秒待つ
  servo.write(0);  //サーボを0°の角度に
  delay(1000);
}

このような感じです。これで一秒ごとに90°向きを変えるプログラムが完成しました。

ですが、この方法だと一瞬で所定の角に移動してしまうため、ゆっくり動かしたい時などに不便です。

なので、この方法を用いました。

サーボの速度調整もどき

Arduinoでゆっくりサーボを動かしたい時に使う

このように、角度を1ずつ変えてその度delayで少し休ませることで、それらしい動きにすることが出来ます。これ以上どうすればいいのかがわからなかったためこうしておきました。なにかいい方法がありましたらお教えください。

追記

なにが不明な点がございましたら、この記事のコメント欄または僕のTwitterアカウントまでお願いします。