M5StickC Plusでプログラミング。M5StickCのプログラムがそのまま動くかと思うと意外とそうでもない。という話。以下、M5StickC Plusは「Plus」、M5StickCは「無印」とする。
使ったことのあるプログラムみたいに、ボタン一発で電源をOFFにしたいと思っていた。参考にしたのは無印用のこのプログラム。
M5StickCとM5 Atom Matrixで新型コロナウイルス接触確認アプリが周囲に何個あるか表示するデバイスを作る
ソースを見ると、
M5.Axp.PowerOff();
というコードがある。これが、Plusでは動かない。コンパイル時にエラーになる。PowerOffというメソッドがないそうだ。で、無印用ライブラリの中身を見る。PowerOffを探して、Plusのやつと見比べる。
https://github.com/m5stack/M5StickC-Plus/blob/master/src/AXP192.cpp
https://github.com/m5stack/M5StickC/blob/master/src/AXP192.cpp
PlusにはやはりPowerOffが見つからない。無印の該当部分を見て、Plusで試す。
M5.Axp.Write1Byte(0x32, M5.Axp.Read8bit(0x32) | 0x80);
これで行けた。Plusでちゃんと電源切れた。ツイッターに書いたけど、あとで見返すときのためにブログにも記録。
(追記 2022/02/15)上記リンクを見ればわかるように、現在ではPowerOff()があるみたいですね。(追記終わり)
以前は動いてたプログラムが動かない
ついでに最近知ったこと、もう一件。昨年書いたM5Stack、M5StickC用のプログラムを使ってみようと思ったら、コンパイルでエラー出る。ボードマネージャーでバージョンアップしたから? M5のライブラリを更新したから? いろいろ戻してみたりしたけど、やっぱりエラーが出る。
エラーが出ているのは、自分で書いたプログラムじゃなくて、使っていたライブラリ。これをエラーが出ないように修正してもいいんだけど、あとで管理が面倒になりそう(実際、一回修正して動くところまでいった)。やっぱり、この方針は変更。
そこで、改めてエラーメッセージで検索。すると、海外のフォーラムに、Arduino IDEの設定で警告を「すべて」から「初期値」にしたら、コンパイルが通ったというのがあった(日本語ではなく英語で書かれていた)。まじか? と思って試したら、ほんとに通った。
エラーが出てたのは、SD-Updaterと、IRremote。printfのパラメータ数が合わないとか、memsetの最後のパラメータに0が使えないとかそのへん。とりあえず、また問題なく動くようになったので追求は終わり。
コメント
はじめまして。いつも参考にさせていただいております。
質問なのですが、こちらのトップ画像にあるM5Stickのホルダーのようなストラップのようなものはなんという商品なのでしょうか?
こういう商品を探しているのですが、名称がわからずに困っておりました。
無印良品で売っている「タグツール」という商品シリーズの「シリコンケース」です。
こちらに詳しいです。
https://lang-ship.com/blog/work/muji-tag-case/
すごい!!まさに求めていたものです。ありがとうございます!!