質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.40%
M5Stack

M5Stackは、小型のマイコンモジュールです。拡張モジュールが豊富に用意されており、センサと組み合わせることで測定機能を自由に追加することができます。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

1回答

351閲覧

M5sticks Plus2で振動を検知したい

hina20021009

総合スコア0

M5Stack

M5Stackは、小型のマイコンモジュールです。拡張モジュールが豊富に用意されており、センサと組み合わせることで測定機能を自由に追加することができます。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

0クリップ

投稿2024/05/27 05:14

実現したいこと

M5sticks Plus2で振動を検知したいです。
ArduinoIDEを使用しています。
Githubに載っていたM5sticks Plus2のサンプルコードは正常に動作したため初期設定のミスはないと思います。

発生している問題・分からないこと

M5sticks Plusで振動を検知するコードをネットで見つけ、コンパイルしたのですがエラーが出ます。
変更した点は、一行目、#include "M5StickCPlus2.h" をPlus2変更しました。

エラーメッセージ

error

115rdbgn.vikig\sketch_may27b\sketch_may27b.ino: In function 'void setup()': 2 3error: 'class m5::M5Unified' has no member named 'IMU' 4 M5.IMU.Init(); 5 ^~~ 6 error: 'class m5::M5Unified' has no member named 'IMU' 7 M5.IMU.SetAccelFsr(M5.IMU.AFS_4G); 8 ^~~ 9error: 'class m5::M5Unified' has no member named 'IMU' 10 M5.IMU.SetAccelFsr(M5.IMU.AFS_4G); 11 ^~~ 1215rdbgn.vikig\sketch_may27b\sketch_may27b.ino: In function 'void loop()': 13 14 error: 'class m5::M5Unified' has no member named 'IMU' 15 M5.IMU.getAccelData(&ax,&ay,&az[i]); // IMUから加速度を取得 16 ^~~ 17 18exit status 1 19 20Compilation error: 'class m5::M5Unified' has no member named 'IMU'

該当のソースコード

#include <M5StickCPlus2.h> #define SAMPLE_PERIOD 20 // サンプリング間隔(ms) #define SAMPLE_SIZE 240 // サンプリング間隔(20) x 画面幅(240) = 4.8s #define BUTTON_A 37 bool isPause = false; void setup() { M5.begin(); M5.Lcd.setRotation(3); M5.IMU.Init(); M5.IMU.SetAccelFsr(M5.IMU.AFS_4G); pinMode(BUTTON_A, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(BUTTON_A), handleInterrupt, FALLING); } float ax, ay, az[SAMPLE_SIZE]; #define X0 5 // 横軸の描画開始座標 // 水平静止で重力加速度1000mGが常にかかることを考慮する #define MINZ -1000 // 縦軸の最小値 mG #define MAXZ 3000 // 縦軸の最大値 mG void handleInterrupt() { isPause = !isPause; } void loop() { if (!isPause) { M5.Lcd.fillScreen(BLACK); // 画面クリア for (int i = 0; i < SAMPLE_SIZE; i++) { if (isPause) break; M5.IMU.getAccelData(&ax,&ay,&az[i]); // IMUから加速度を取得 az[i] *= 1000; // mGに変換 if (i == 0) continue; // Serial.println(az[i]); // シリアルモニタは115200baudで通信 int y0 = map((int)(az[i - 1]), MINZ, MAXZ, M5.Lcd.height(), 0); int y1 = map((int)(az[i]), MINZ, MAXZ, M5.Lcd.height(), 0); M5.Lcd.drawLine(i - 1 + X0, y0, i + X0, y1, YELLOW); delay(SAMPLE_PERIOD); } } }

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

Plus2のサンプルコードと見比べて工夫してみたりしましたが解決できませんでした。
どこを変更すればM5sticks PlusのコードをM5sticks Plus2でも使用できるようになりますか?

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

thkana

2024/05/27 14:03

型名などに記述していない様子なので大丈夫とは思いますが、M5Sticks Plus2ではなくM5StickC Plus2だと思います。 > Githubに載っていたM5sticks Plus2のサンプルコード URLを示してください。それはIMUを使っているものですか? ボードライブラリは何をインストールしていますか? いや、なぜM5Unifiedが顔をだすのかなぁ...と。あと、私の環境ではESP32とM5Stackのボードライブラリを入れただけではM5StickCPlus2.hは見付からないみたいなので何を入れているのかも気になるところです。 とりあえず、M5Unifiedのソース( https://github.com/m5stack/M5Unified/blob/master/src/M5Unified.hpp )を覗くとIMUのデフォルトのインスタンスは IMU ではなく Imu だったりしそうな気がしますがどうでしょう。
guest

回答1

0

質問者に分かりやすいようにエラーメッセージをgoogle翻訳等に通すと
次のようになります。

15rdbgn.vikig\sketch_may27b\sketch_may27b.ino: 関数 'void setup()' 内: エラー: 'class m5::M5Unified' には 'IMU' という名前のメンバーがありま せん M5.IMU.Init(); ^~~ エラー: 'クラス m5::M5Unified' には 'IMU' とい う名前のメンバーがありません M5.IMU.SetAccelFsr(M5.IMU.AFS_4G); ^~~ エ ラー: 'クラス m5::M5Unified' には 'IMU' という名前のメンバーがありませ ん M5.IMU.SetAccelFsr(M5.IMU.AFS_4G); ^~~ 15rdbgn.vikig\sketch_may27b\sketch_may27b.ino: 関数 'void loop()' 内: エラー: 'class m5::M5Unified' には 'IMU' という名前のメンバーがありま せん M5.IMU.getAccelData(&ax,&ay,&az[私]); // IMUから加速度を取得 ^~~ 終了ステータス 1 コンパイル エラー: 'class m5::M5Unified' には 'IMU' という名前のメンバーがありません

明らかにIMUがおかしいっぽいので,includeしているM5StickCPlus2.hを確認すると,

何となくM5.IMUではなくてM5.Imuが正しいっぽいことが分かります。

まぁその他も原因があるかもしれませんが,
きりがないので追加の質問は受け付けません。あしからず。

投稿2024/05/27 14:12

ujimushi_sradjp

総合スコア2124

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.40%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問