Arduinoで「VarSpeedServo.h」というライブラリを使った、サーボモータ速度調整の方法の紹介🍇
◆ サーボモーター
「サーボモータ」はマイコンなどを使って、プログラムした角度まで自在に回転させることができるモーターです。
Nursery lab でも何回か記事にして紹介してきたパーツです。
🥕基本的なサーボモータの動かし方 ↓
miraluna.hatenablog.com
🍅つまみを回すと、同じようにサーボモータが動く ↓
miraluna.hatenablog.com
🍒ライブラリを使わないで動かす。速度制御もする ↓
miraluna.hatenablog.com
ちなみにあだ名は「ペンギン」よ。
この記事では Arduinoでサーボモータの速度を制御するための、ライブラリを使った方法を紹介します。 リンク→「ライブラリとは?」
1.ライブラリをダウンロードする。
今回使うライブラリはフィリップ・ファン・アレン(pvanallen)さんが作成して、GitHubというサイトで公開してくださっているものです。Thank you so much, Mr.pvanallen.
こちらのリンクから移動できます。→ 🍅ここだよ🍅
移動すると英語ばっかりのサイトですね。そこに「Code」か「Clone」か「Download」と書かれた緑色のボックスがあると思います(Sign up じゃないほう)。そこからダウンロード方法を選んでダウンロードします。私は Download Zip という Zipファイルをダウンロードして展開(解凍)する方法でやっています(だから他の方法はよく分かりません)。
2.ダウンロードしたファイルを移動させる。
ダウンロードして展開したファイルをダウンロードファイルなどにそのまま置いておいたのでは、Arduinoが見つけることができないんです。Arduinoには「本(ライブラリ)」を置いておく本棚のようなフォルダ「libraries」が用意されています。
場所は(Windowsなら)「ドキュメント」→「Arduino」に「libraries」があると思います。展開したライブラリファイルは、この「libraries」の中に入れておきましょう。
3.プログラムにインクルードする。
ライブラリを本棚である「libraries」に入れたら、動かしたいプログラムを書きます。そのときにArduinoに本を持たせて、「この本(ライブラリ)のルールに従うのよ」と言いつけるのが、インクルードです。
どうするかというと、プログラムの初めにライブラリ名を以下のように書くだけです。
#include <VarSpeedServo.h>
↑「『VarSpeedServo.h』という本に従うのよ」という言いつけの1行。
これでArduinoは<VarSpeedServo.h>のライブラリを使うことができます。
ダウンロードしたファイルの中にはサンプルスケッチ(スケッチとはArduinoのプログラムのこと)が入っているので、実際に使ってみましょう。
🍐 配線をする。
Arduinoとサーボモータをつなぎます。配線は3本。+電源(5vでも3.3vでも)と、GND線と、通信線。通信線はサンプルスケッチが「9番ピン」を指定していたので、Digitalピンの「9」につなぎます。線の色は、オレンジが+で、茶色がGNDで、黄色が信号線。詳しく見たい方は🍎こちらの記事へ🍎
配線が完了したら、Arduino IDE を開きましょう。
Arduino IDE がない方は→「Arduino IDE のダウンロード方法」
◆ サンプルスケッチ
このスケッチは、サーボモータを0°から180°の位置まで繰り返し回転させ続けるプログラムです。「0°から180°の位置」について知りたい方は、この記事の上の方にあるリンク「Arduinoを使ってサーボモーターを制御してみよう。」を読んでみてね。
プログラムの中に赤い丸と青い丸が付いていますね。これが速度です。
赤い丸の数字は180°の位置まで移動するときの速度。
青い丸の数字は 0°の位置まで移動するときの速度。
数字が大きいほど速くて、たぶん255が最大じゃないかな。今は両方とも30で、同じ速さね。
◆ サンプルスケッチを修正
それではこの数値を変えてみましょう。
180°まで移動するとき(往路)は「10」の速度に、
0°まで移動するとき(復路)は「200」の速度にしてみます。
すると往路はゆっくりだけど、復路は速く回転します。
🍕動作実験の動画🍆
サーボモーターの速度調整のしかた(∂. ∂🎀/
これでサーボモータのスピードをコントロールすることができるようになりました。(∂. <🎀y やったね。
みなさんもArduinoでサーボモータを制御して、楽しい電子工作してみませんか?
紹介はTinyミラchenでした。