M5StackでRCサーボを動かす

Arduino

M5StackではArduinoの定番のServo.hが使えません.
ところが, ogimotokiさんが自作のプログラムでサーボを動かしていました.

M5Stack(ESP32)を使い始めてみた - OGIMOノート
はじめに ちまたでブームになっている Arduino対応無線マイコンESP32が搭載されたモジュールキット”m5stack"! 2か月ほど前に衝動買いしていたものの、別件を優先してすっかり積みマイコン化していましたが、ようやく開封! M5Stackとは M5StackはEspressif社のArduino対応無線(Wi...

今回はこちらのコードを利用させていただき, M5Stack用のサーボライブラリとしてM5Servo.hを開発しました. 基本的な使い方は定番のServo.hの時と同じです. ただし, writeは角度の範囲を-90–90にしています.
以下のリンクから, ヘッダファイルとテスト用のinoファイルをダウンロードしてください.

ダウンロードしたら, M5Servo.hはM5Stackのライブラリが入っているArduino/libraries/M5Stack/src/utilityに入れてください. M5Servo_sweep.inoはArduinoフォルダにM5Servo_sweepというフォルダを作り, その中に移動させてください.
また, Arduino/libraries/M5Stack/src/M5Display.cpp内のM5Display::progressBarを次のように書き換えて下さい. この変更はサーボを動かす上で必須ではありませんが, バーを描画する前の全画面リセットを不要にすることができます. M5Stackの全画面リセットは画面がちらつくので避けたい処理の1つです.

void M5Display::progressBar(int x, int y, int w, int h, uint8_t val, uint32_t bar_color, uint32_t back_color) {
  fillRect(w * (((float)val) / 100.0) + 1, y + 1, w - 1, h - 1, back_color);
  drawRect(x, y, w, h, bar_color);
  fillRect(x + 1, y + 1, w * (((float)val) / 100.0), h - 1, bar_color);
}

続いて, 次の表の通りに配線して下さい.

M5StackRC Servo
5VV+
5SIG
GNDGND

この状態で, M5Servo_sweep.inoを書き込めばサーボが動画のように動きます.

RC Servo Motor controlled with M5Stack

コメント