目次
Arduinoで電子工作するときにサーボのスピードを自由に簡単に設定したいときはありますよね!
Arduino標準のServoライブラリーがありますが、それを拡張した形で開発されているサーボの回転スピードも自由に簡単に設定できるライブラリーがあります!
それは VarSpeedServoです!
https://github.com/netlabtoolkit/VarSpeedServo
私も、このブログで、事前の調査と、基礎の勉強として、いろんなボードからサーボを動かしたりしています。
みんな、サーボを動かせていましたが
次は、スピードも色々自由に設定できるといいなとずっと思いました。
もちろん、自分で、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
サーボを少し早めに動かします! pic.twitter.com/k799c92q9s
— 川島@ソフトウェア、Web、アプリ、IoT作るのが大好き (@kokensha_tech) 2018年7月27日
回転の角度や、スピードを色々試すのが結構楽しいです。
こちらの、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 メタルギア・デジタルサーボ”]