環境設定: Arduino IDE の始め方チュートリアル を参考にして、IDEをインストールし、使用する開発ボードに対応するボードマネージャーと必要なライブラリをインストールしてください。
必要なライブラリ:
M5UnifiedとM5GFXをベースに、基本的なコマンド表示機能を追加し、turn on
と turn off
コマンドのコールバック関数を追加して、ライト制御シーンをシミュレートします。
#include <M5Unified.h>
#include <unit_asr.hpp>
ASRUnit asr;
void turnOnHandler()
{
Serial.println("turn on command received!");
M5.Display.setCursor(0, 0);
M5.Display.fillRect(0, 0, 320, 60, BLACK);
M5.Display.println("turn on!");
}
void turnOffHandler()
{
Serial.println("turn off command received!");
M5.Display.setCursor(0, 0);
M5.Display.fillRect(0, 0, 320, 60, BLACK);
M5.Display.println("turn off!");
}
void wakeupHandler()
{
Serial.println("Hi, M Five command received!");
M5.Display.setCursor(0, 0);
M5.Display.fillRect(0, 0, 320, 60, BLACK);
M5.Display.println("wakeup!");
}
void setup()
{
M5.begin();
M5.Display.setFont(&fonts::FreeMonoBold12pt7b);
Serial.begin(115200);
asr.begin(&Serial1, 115200, 18, 17);
asr.addCommandWord(0x14, "turn on", turnOnHandler);
asr.addCommandWord(0x15, "turn off", turnOffHandler);
asr.addCommandWord(0xFF, "Hi, M Five", wakeupHandler);
M5.Display.setCursor(0, 0);
M5.Display.fillRect(0, 0, 320, 60, BLACK);
M5.Display.println("Say \"Hi, M Five\"\nto wake up!");
}
void loop()
{
M5.update();
if (asr.checkMessage()) {
Serial.println(asr.getCurrentCommandWord());
Serial.println(asr.getCurrentCommandNum());
Serial.println(asr.getCurrentRawMessage());
Serial.println((asr.checkCurrentCommandHandler()));
}
}
CoreS3では、リセットボタンを長押し(約2秒)して内部の緑色LEDが点灯したら、ボタンを放します。この時点でデバイスはダウンロードモードに入り、プログラムの書き込みを待機します。
Hi M Five
コマンドを使ってウェイクアップします。I'm here
と返答します。Turn on
コマンドを使い、OK
と返答します。Turn off
コマンドを使い、OK
と返答します。AA 55 46 55 AA
の命令コードが 0x46
である場合。この例のプログラムを参考にして、コマンドを追加し、コールバック関数を登録することができます。#include <M5Unified.h>
#include <unit_asr.hpp>
ASRUnit asr;
void JustHandler()
{
Serial.println("Just command received!");
}
void setup()
{
M5.begin();
Serial.begin(115200);
asr.begin(&Serial1, 115200, 22, 21);
asr.addCommandWord(0x46, "Just", JustHandler);
}
void loop()
{
M5.update();
if (asr.checkMessage()) {
Serial.println(asr.getCurrentCommandWord());
Serial.println(asr.getCurrentCommandNum());
Serial.println(asr.getCurrentRawMessage());
Serial.println((asr.checkCurrentCommandHandler()));
}
}
Hi M Five
コマンドでウェイクアップし、I'm here
と返答します。Just
コマンドを使用し、Do it
と返答します。JustHandler
関数が正常に呼び出されます。Just command received!
Just
0x46
0xAA 0x55 0x46 0x55 0xAA
1