M5Stack Core2 のバイブレーションモーターを動かしてみる
M5Stack Core2にはバイブレーションモーターが搭載されていますが、Arduino IDEでどのようにコーディングすればバイブレーションできるようになるのか知りたかったため、公式リポジトリのソースコードを見てちょっとだけ調べたことをメモします。
とりあえずバイブレーションを試すには
AXP192クラスのSetLDOEnable関数をコールすることで、バイブレーションの開始 or 終了を指定できます。
サンプルコード
下記のvibration関数のようにバイブレーション開始から終了までをワンセットにした関数を定義しておくと、ボタン押下のタイミングに合わせて振動フィードバックしたいときなどにその関数1つ呼び出すだけで済むようになるので便利です。
#include <M5Core2.h>
#include <AXP192.h>
AXP192 power;
// バイブレーション実行関数
void vibration() {
power.SetLDOEnable(3, true); // 3番をtrueにしてバイブレーション開始
delay(100); // バイブレーションの長さ(ms)はお好みで調整
power.SetLDOEnable(3, false); // 3番をfalseにしてバイブレーション修了
}
void loop() {
// vibration(); // バイブレーションしたいときに呼び出すだけ
delay(1000);
}
参照しました
公式リポジトリのReadme(PinMap)を見ると、バイブレーションモーターの電源とAXPのLDO 3番pinとがマッピングされていることが示されています。
AXP192クラスのSetLDOEnable関数の中身を見ると、第一引数にAXPのLDO番号(2または3)を、第二引数に希望する状態(true/false)を指定することで制御できる作りになっていました。
前述のサンプルコードは、必要なパラメータを指定してこの関数を呼び出しただけに過ぎません。
公式リポジトリ(M5Core2ライブラリ)のコード
void AXP192::SetLDOEnable(uint8_t number, bool state)
{
uint8_t mark = 0x01;
if ((number < 2) || (number > 3))
return;
mark <<= number;
if (state)
{
Write1Byte(0x12, (Read8bit(0x12) | mark));
}
else
{
Write1Byte(0x12, (Read8bit(0x12) & (~mark)));
}
}
Author And Source
この問題について(M5Stack Core2 のバイブレーションモーターを動かしてみる), 我々は、より多くの情報をここで見つけました https://qiita.com/monnouchi/items/a129fb9150b992d51f61著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .