M5StickC Plusで電源OFF

M5Stack

 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でちゃんと電源切れた。ツイッターに書いたけど、あとで見返すときのためにブログにも記録。

以前は動いてたプログラムが動かない

 ついでに最近知ったこと、もう一件。昨年書いたM5Stack、M5StickC用のプログラムを使ってみようと思ったら、コンパイルでエラー出る。ボードマネージャーでバージョンアップしたから? M5のライブラリを更新したから? いろいろ戻してみたりしたけど、やっぱりエラーが出る。

  エラーが出ているのは、自分で書いたプログラムじゃなくて、使っていたライブラリ。これをエラーが出ないように修正してもいいんだけど、あとで管理が面倒になりそう(実際、一回修正して動くところまでいった)。やっぱり、この方針は変更。

 そこで、改めてエラーメッセージで検索。すると、海外のフォーラムに、Arduino IDEの設定で警告を「すべて」から「初期値」にしたら、コンパイルが通ったというのがあった(日本語ではなく英語で書かれていた)。まじか? と思って試したら、ほんとに通った。

 エラーが出てたのは、SD-Updaterと、IRremote。printfのパラメータ数が合わないとか、memsetの最後のパラメータに0が使えないとかそのへん。とりあえず、また問題なく動くようになったので追求は終わり。

 あと、以下にAmazonのリンクを貼ってみたものの、スイッチサイエンス扱い以外のセラーは法外な価格になっているので注意。

 

コメント