見出し画像

AIスタックチャンメモ(1)

世間から2年ぐらい遅れて「AIスタックチャン」がマイブームになっています。

M5Burnerで完成したものを書き込むのが早いのかもしれませんが、この種のマイコンボードをあまり知らない私としては、1から入門的に学びながら作っていきたいと考えました。

環境

M5Stackの開発は、ArduinoIDEを使うことが多いようですが、ビルドや書き込みの速度が遅いような気がしましたので、使い慣れたVS Codeを使うことにしました。

VS Codeに拡張機能の「PlatformIO」を入れることで、すべてをVS Codeだけで作成できるようになります(多分)

ライブラリが違う

C++のことも良く分かっていないので、ライブラリの設定とかもぜんぜんわからんのですが、どうやらM5Stackの標準機能ライブラリは「M5Core2」というものだったのが、少し前に「M5Unified」というものが推奨されるようになったそうです。

ネット上の情報には、古いライブラリで書かれているものがあり、それをそのままコピペではうまくいかないことが多いのです。

また、開発環境も「M5burnerで簡単にやる!」「ArduinoIDEを使う」「UIFlowでビジュアルプログラミング!」と様々です。

そしてそもそも、このジャンル自体がマイナーなので、それの日本語解説となると益々少なそうです。

こんな時に頼りにしたいChatGPTさんも、学習データが少ないためか、エラーばっかりのコードを出します。

困ったことを解決しながら、コードのメモを残す

というわけで、今回は、
・VS Code(PlatformIO)での開発環境
という条件で、スタックチャン(顔だけ)をAI化するところまでを目標にしていきたいと思います。

とりあえず今できているところまでのコード

とりあえず、今分かったことは、

・顔の表情や吹き出しは「M5stack-Avatar」というライブラリを使う
・日本語の表示は、set up()内で
”avatar.setSpeechFont(&fonts::lgfxJapanGothic_12);”
を書き込む。

ってところかな。

以下のコードはボタンを押すことで、表情を変えながら言葉を表示するスタックチャンのサンプル。まだ音声ではしゃべれません。

#include <M5Unified.h>
#include <Avatar.h>

using namespace m5avatar;

Avatar avatar;

void setup()
{
  M5.begin();
  M5.Lcd.fillScreen(TFT_BLACK);
  avatar.init();
  avatar.setSpeechFont(&fonts::lgfxJapanGothic_12);
}

void loop()
{
  M5.update();

  if (M5.BtnA.wasPressed())
  {
    avatar.setSpeechText("こんにちは");
    avatar.setExpression(Expression::Happy);
    avatar.setMouthOpenRatio(0.7);
    delay(500);
    avatar.setMouthOpenRatio(0);
  }

  if (M5.BtnB.wasPressed())
  {
    avatar.setSpeechText("こらー!");
    avatar.setExpression(Expression::Angry);
    avatar.setMouthOpenRatio(0.7);
    delay(500);
    avatar.setMouthOpenRatio(0);
  }

  if (M5.BtnC.wasPressed())
  {
    avatar.setSpeechText("エーン!");
    avatar.setExpression(Expression::Sad);
    avatar.setMouthOpenRatio(0.7);
    delay(500);
    avatar.setMouthOpenRatio(0);
  }
}

次は音を鳴らせるようにしたいです。

この記事が気に入ったらサポートをしてみませんか?