サイトアイコン KOKENSHAの技術ブログ

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の電源供給で

動きました。

しかし、スピードを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つも交代で指定したスピードで回転します。

まとめ

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

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 メタルギア・デジタルサーボ”]

モバイルバージョンを終了