Arduinoで動くものを作るときは必須のアイテムとなるサーボモータ。
以前から何回かは使っていますが、忘れがちなので記事としてまとめてみました。
使うサーボモータ
使うサーボモータは以下のものです。
Tower Pro製 Micro Servo Digital 9g SG90になります。
https://amzn.to/3u1Z55K
https://akizukidenshi.com/catalog/g/gM-08761/
おそらく一番有名?だと思います。
Amazonでは最近以下のような商品も出回り始めたみたいですね。
以前は黒い低出力ミニサーボしかなかったんですが、、、
https://amzn.to/3CEO2T1
評価はまちまちですが、かなりお得そうなので今度買ってみようと思います。
プログラム
今回も他の記事等しく、一番簡単なプログラムでやっていきたいと思います。
ただサーボを動かすだけのスケッチですね。
スケッチは以下の通りです。
#include <Servo.h>
Servo servo1;
#define SERVO1 10
void setup() {
servo1.attach(SERVO1);
}
void loop() {
servo1.write(30);
delay(1000);
servo1.write(150);
delay(1000);
}
細かい部分
#include <Servo.h>
サーボモータ制御のためのライブラリをインクルードします。
Arduinoのライブラリから簡単に落とせます。マジ神。サーボのインスタンス宣言です。
Servo servo1;
サーボのインスタンス宣言です。
#define SERVO1 10
サーボモータの制御ピンを10番ピンで使うことを指示します。
void setup() {
servo1.attach(SERVO1);
}
なんだかよくわかりませんが、SERVO1というものを使えるようにするために、インスタンスにアタッチした、とかいうことらしい。
void loop() {
servo1.write(30);
delay(1000);
servo1.write(150);
delay(1000);
}
上から順に、
サーボ角度を30度にします。
1000ms待ちます。
サーボ角度を150度にします。
1000ms待ちます。
ということです。
まとめ
サーボライブラリマジ神。
ただこれだと角度制御しかできないので電流制御できるように+端子に並列に巨大な抵抗かましてやってみたいね。
PID必要なほど重い負荷は無理だと思いますが。。。