環境設定: 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.update()) { 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