0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

M5Goを使ったサーボモータの駆動(忘備録)その2

Posted at

はじめに

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);
}

作成した回路でスケッチを実行中の状態です。
20240131_201219 (2).jpg

使用した部品です(LEGOブロックは除く)。
20240131_201828.jpg

開発環境

マイコンボード:M5GO Ver.2.7
ボード情報:M5Stack by M5Stack, ver. 2.1.0
Ardiono IDE:ver. 2.2.1
OS:Windows11

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?