ArduinoでServoのスピードを簡単に設定できるライブラリーVarSpeedServoの簡単導入!

目次

Arduinoで電子工作するときにサーボのスピードを自由に簡単に設定したいときはありますよね!

Arduino標準のServoライブラリーがありますが、それを拡張した形で開発されているサーボの回転スピードも自由に簡単に設定できるライブラリーがあります!

それは VarSpeedServoです!

https://github.com/netlabtoolkit/VarSpeedServo

私も、このブログで、事前の調査と、基礎の勉強として、いろんなボードからサーボを動かしたりしています。

Arduinoとポテンショメーター(可変抵抗)で動かす連続回転サーボ

ESP32でウェブからサーボを制御する!

みんな、サーボを動かせていましたが

次は、スピードも色々自由に設定できるといいなとずっと思いました。

もちろん、自分で、parameterを変えたり、自前のライブラリーっぽいプログラムを書いたりすれば、実現できそうですが

今回のライブラリーはその部分を用意してくれました。

今日は、それを使って簡単にテストの結果を共有します。

まずは環境の準備

まず、githubのサイトからzipファイルをダウンロードしてください。

https://github.com/netlabtoolkit/VarSpeedServo

ダウンロードしたファイルはそのまま解凍せずに

次は、Arduino  IDEを開いて

SKETCHメニュー > ライブラリーを追加 > Zipライブラリーを追加 > ここで先ほどダウンロードしたZipファイルを選んであげればOKです。

そうすると、Arduinoがこのライブラリーを使えるように配置してくれるはずです。(私は今回UnbuntuでArduinoでやりましたので、できました。MacとWindowsのかたは、GitHubの説明等にご参考ください。)

プログラム

プログラムも至って簡単です。

下は、GitHubのサンプルです、そのまま実行できます!配線は下に書いています。

#include <VarSpeedServo.h> 
 
VarSpeedServo myservo;    // create servo object to control a servo 
 
void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object 
} 
 
void loop() {
  myservo.write(180, 30, true);        // move to 180 degrees, use a speed of 30, wait until move is complete
  myservo.write(0, 30, true);        // move to 0 degrees, use a speed of 30, wait until move is complete
}

配線

サーボは3本のワイアがあります。

サーボGND(黒か、ブラウン) > Arduino GND

サーボV(赤か、オレンジ) > Arduino 3.3V/5V

 

サーボS(黄色か、白) > Arduino 9か11(プログラムの指定によります)

実際に動かす

こちらのサーボ SG-5010が5Vの電源供給で

動きました。

サーボをゆっくり動かせます。

賢 川島さん(@kawashimaken)がシェアした投稿 –

しかし、スピードをMAXの255に設定した時に、少し変な動きしています。期待した通りの動きにならなかったです。

こちらの定番のSG90

回転の角度や、スピードを色々試すのが結構楽しいです。

こちらの、HIGH TORQUEの MG996Rも高速回転は少し変です。

もしかしたら、電圧の問題かもしれません。

余談ですが、High  Torqueなので、とても硬くて力強いです。

2つのサーボを動かす

プログラムは下記となります。

#include <VarSpeedServo.h> 
 
VarSpeedServo myservo;    // create servo object to control a servo 
VarSpeedServo myservo2; 
 
void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object 
  myservo2.attach(11);  // attaches the servo on pin 9 to the servo object
} 
 
void loop() {
  myservo.write(180, 30, true);        // move to 180 degrees, use a speed of 30, wait until move is complete
  myservo.write(0, 30, true);        // move to 0 degrees, use a speed of 30, wait until move is complete
  myservo2.write(180, 30, true); 
  myservo2.write(0, 30, true); 
}

配線はこんな感じです!(と言われてもね、笑。多分みなさんは雰囲気はもうバッチリだと思います!笑)

2つも交代で指定したスピードで回転します。

サーボ二つ動かします!#arduino

賢 川島さん(@kawashimaken)がシェアした投稿 –

まとめ

結論として、とてもシンプル簡単なプログラムですぐスピードの制御ができました。

SG90は問題なく動きました。

他のサーボはおそらく電圧関係かと思いますが、早いスピードのときは、動きが挙動不審です!笑。これからじっくりGitHubのissueも漁ってみます。

原因が分かったら、この記事を更新してまいります。

[amazonjs asin=”B00VUJYNWG” locale=”JP” title=”デジタル・マイクロサーボ SG90 (5個)”]

[amazonjs asin=”B06XF2HZGT” locale=”JP” title=”ELEGOO UNO キット レベルアップ  チュートリアル付 uno mega2560 r3 nanoと互換 Arduino用”]

[amazonjs asin=”B01LXJ8Y0Z” locale=”JP” title=”SG5010 デジタルサーボ”]

[amazonjs asin=”B010SLRAAS” locale=”JP” title=”MG996R メタルギア・デジタルサーボ”]

Add a Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close