珈琲時間のおともにちょこちょことパズル感覚で遊んでいるM5stackなのですが、つい先日とうとう壊してしまったかと思う事態に陥ったので忘れないうちにメモ書き。
まず、いつの間にか実験机の周りにはM5stack BASIC、M5stickCplus、M5atom liteが転がっているようになり、なんだかんだと遊ぶにはコスパのよいものたちだなあと感心していたわけなのです。
購入した順序でいくとM5stickCplusがもっとも最近なのですが、どうやら今回の顛末はここがキーポイントのようです。
■更新すると画面が真っ黒なままに
というのも、ある日、珈琲をのみながら不具合のあったソースを少しだけ改良して持ち帰って喜び勇んでM5stack BASICに転送したわけなのですが、ふと画面をみると真っ黒なまま。
でも、シリアルモニタには動作情報が刻々と表示されているのでまったく動いていないわけではなさそうな雰囲気。
ただ、いつもバイナリ書き込みの際にダストセンサーをつないだままにしておくと書き込みに失敗するので取り外して配線がブラブラしたままで作業をするのが習慣化していました。
今回もバイナリ書き込み中にケースをあけて配線の整理などをやっていたので、もしやブラブラしていた配線がなにかにショートでもしたか?!と疑ってかかってしまったのも問題を特定するまで余計な時間がかかった敗因です。
自分のコードをいくらコンパイルし転送しなおしても画面が出る気配がないので、サンプルスケッチからFactoryTestを開きコンパイルして書き込んでみるも、やはり画面表示だけが出てきてくれない状態。万事休すか・・・
■FactoryTestのバイナリを直接流すと復活
先日からなにやら1000円ほど値上がりしちゃったからM5stack BASICを買いなおすのもなんだかなーと思ったりしながら、念のためにWindows機でEasyLoaderをダウンロードしてきて(Mac版だとERASEの機能が見当たらなかったので)フラッシュのERASEとFactoryTestの書込みをすると無事に画面が表示されました。
こうなるとソフト的な問題なのか?と思いながら、でもソースの改変部分って中身の計算だけでハードウェア制御にかかわるような部分には触れていないし・・・ライブラリが変わった?と不思議に思いつつ、M5.begin()の引数をあれこれ触ってみて M5.begin( true, false, true, true )とすると画面が正常に出るんですね。
でも、引数を省略したりM5.begin( true, true, true, true )とすると画面が出ない。
M5StackのM5.begin()で第二引数をfalseにするとSDカードへのアクセスができないからファイル操作や日本語フォントが出てくれないなど困ったことがいっぱい。
さんざん、あーでもないこーでもないと悩みまくってとりあえず頭を冷やそうかと諦めかけたとき、ふとArduinoの設定をみると、M5stack-Cと出ている!!
なんと、M5stack-Cを弄ったあともとに戻すことを忘れたままM5stackに接続し、しかもコンパイル時にもなんらエラーも出ないので完全に見落としておりました。凡ミスも良いところです。
■M5.beginの引数の意味が変わるとは
M5stackシリーズのM5.begin()関数って、それぞれのモデルによって引数の数が違ったり意味が違ったりするんですよね。
なので、M5stackCのままでLCDとSDをtrueにしているつもりだったのに、まったく違う動作になってしまっていたからかと納得しました。
間違ったままコンパイルしていたことで、画面が出なかったり、画面が出てもSDカードにアクセスできなかったりといったことが発生していましたが、すべては設定ミスが原因です。
(ついでにType-Cケーブルにはやはり裏表があることも初めて経験しましたが・・・)
そのため、結論から言えばEasyLoaderのERASEの機能を使う必要は無かったですが、それでも経験値としては少し積むことはできたのかなあとポジティブに捉えておくことにしたのでした。
—
消えちゃった動画や写真データの復元は
安心安全な『株式会社パソコントラブル救助隊』へ。
https://hqsecure.net/
株式会社パソコントラブル救助隊で公式サイトを含めたウェブマスターを兼任しています。
趣味はカメラとぶらり散歩。フォトマスターは2級。日々感じたことを忘れないうちに雑記帳に書いています。