2020/10/17 注意! 2つのサーボを個別に動かせないバグを発見しました.代わりにESP32Servoをお使いください.
GitHub - madhephaestus/ESP32Servo: Arduino-compatible servo library for the ESP32
Arduino-compatible servo library for the ESP32. Contribute to madhephaestus/ESP32Servo development by creating an account on GitHub.
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);
}
続いて, 次の表の通りに配線して下さい.
M5Stack | RC Servo | |
---|---|---|
5V | — | V+ |
5 | — | SIG |
GND | — | GND |
この状態で, M5Servo_sweep.ino
を書き込めばサーボが動画のように動きます.
コメント