R2.6.1 バッテリー残量を知る2
M5Stackを使うのは、就寝時の音楽。その際、M5Stackのバッテリー残量がどのくらいあるのかを知っておくことは重要だ。ということでmp3再生プログラムにバッテリー残量を表示するのが課題になっていた。以前、2つ方法があると自分で書いていました。それを同時に使ってみましたよ。
単純に M5.Power.getBatteryLevel(); だけでもバッテリーレベルは入手できるのだけれど、mp3再生と一緒に使うとビジューという雑音になってしまうので、 Wire.endTransmission(); してやらねばならないのかもしれません。この辺、知識全くありませんので試行錯誤でやっています。
とにかく、下のような表示ができました。
ただ、ランチャーからこのプログラムを出したときと、電源ボタンでリセットしたときにはバッテリーレベルを表示してくれますが、曲が終了してプログラムでリセットしたときには−1を返してくれます(^^;)
これもPower.cppを読み解けば解決できるかな?
R2.5.21 バッテリー残量を知る
LovyanLauncherを使っていると、左上にバッテリーアイコンが出ており、残量を知ることができる。バッテリー状態は最近のB5Stackであれば取得できる。いろいろ調べてみると、2通りのやり方を見つけた。もっとも、その根本のところは一緒なんだと思う。Power IC IP5306にあたっているのだろうと思う。M5Stack.cppを読めば分かるのだろうけれど、基礎知識がないために読み切れない(^^;)
知識があると、見えてくるものがあるのだけれど、知識がないと全く見えない!
それはともかく、極めてシンプルなところで、デバイスビジネス開拓団というページの JosephHalfmoonさんの記事、「IoT何をいまさら(48) M5Stack、Powerについて」で知ることができたやり方。
を宣言したのち、
でバッテリーレベルを聞く方法。素晴らしい、1行ですよ。
もう一つは、LovyanLauncher作者のらびやんさんが教えてくださっている方法。 Wire.begin(); を宣言ののち
という方法ですね。私の最近購入のM5StackGRAYでは問題なくバッテリーレベルを教えてくれます。ところが、同じスケッチを改造しているM5StackGRAYに書き込んでも、うまく動作しません。
ランチャーから読み込んだ最初はバッテリのレベルを教えてくれます。緑の「Play」表示の左にアイコンと数値が表示されます。128とは0x80で75%の意味。224は0xE0で20%の残量。
ところが、改造の方は電源を落としたり電源ボタンでリセットすると、0 を返してくれるんですね。ありがとう! 常に満タンです(^^;)
物理スイッチを入れてるからか? 内部DACを潰しているからか? でも、らびやんさんのランチャーでは改造GRAYでもきちんとバッテリレベルを表示してくれている。さて問題です。どうしましょう?