はじめに
M5GoでServo Kit 360'を駆動させた記録です。サーボのドライバには、M5Stack用8chサーボドライバユニットを使っています。
サーボ駆動の方法
購入先のスイッチサイエンスさまにやり方を教えていただきました。やり方は次のとおりです。
前回の記事と同じSERVO_CTLというスケッチをArduinoIDEで開き編集します。
360'サーボは、スケッチ中のunit_8servo.setServoPulse(channel, pulse)という関数で制御します。channelにはサーボドライバユニットに接続するチャンネル数を入力し、pulseには回転方向と回転数に関係する数値を入力します。
pulseの値は1500で停止、1500より小さいと時計回りの回転、1500より大きいと反時計回りの回転となります。数値は1500に近い値ほどゆっくり回転します。
このことを使って、今回は以下のようなスケッチを作成しました。
サーボドライバユニットの0と1チャンネルにサーボモータを接続し
①互いに逆方向に1秒間回転
②0.5秒停止
③互いに逆方向に1秒間回転
④0.5秒停止
を繰り返します。①と③は回転方向が逆になります。
#include "M5_UNIT_8SERVO.h"
M5_UNIT_8SERVO unit_8servo;
void setup() {
while (!unit_8servo.begin(&Wire, 21, 22, M5_UNIT_8SERVO_DEFAULT_ADDR)) {
Serial.println("extio Connect Error");
delay(100);
}
unit_8servo.setAllPinMode(SERVO_CTL_MODE);
}
void loop() {
unit_8servo.setServoPulse(0, 500);
unit_8servo.setServoPulse(1, 2500);
delay(1000);
unit_8servo.setServoPulse(0, 1500);
unit_8servo.setServoPulse(1, 1500);
delay(500);
unit_8servo.setServoPulse(0, 2500);
unit_8servo.setServoPulse(1, 500);
delay(1000);
unit_8servo.setServoPulse(0, 1500);
unit_8servo.setServoPulse(1, 1500);
delay(500);
}
開発環境
マイコンボード:M5GO Ver.2.7
ボード情報:M5Stack by M5Stack, ver. 2.1.0
Ardiono IDE:ver. 2.2.1
OS:Windows11