「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



早い!

http://www.nicovideo.jp/watch/sm32837227

15日目来てた。予想外の展開に。





早い。Aliexに頼んでた、MAX7219搭載のLEDマトリックス
モジュール。春節がらみだったからもっと掛かると覚悟
してたのに、もう届いた。

開封してびっくり。これ、4つのモジュールをコネクタで
繋いだものだとばかり思ってたけど、4モジュール分が
1枚の基板にくっついたままの状態なんだな。



Vカットも入ってないから、プラカッターとか回転歯とか
でカットしないと1個1個で使えないんだな。
まぁ、このままでもいいや。



早速弄ってみる。

https://www.youtube.com/watch?v=O_jZZU_5coU

この動画を参考に、動画からのリンクでスケッチが公開
されているので、ピン番号とか、ライブラリの読み込み
先とかだけちょっと弄って、実行。

内容的には、文字フォントを使って、1ドット単位で
文字列をスクロールするような、サイネージっぽいもの。

…なんだけど、このスケッチが前提にしているモジュール
は、DIP型のMAX7219を使った基板用なので、縦横90度
回転したタイプのやつ。
なので、このまま動かすと、8ドット単位で4つにぶつ切り
された状態で、それぞれの8ドットごとにスクロール
してしまうという状態。ぱっと見、アルファベットでは
なく、ハングルっぽい見た目になってびっくりする。

これを90度回転するように改造するのも大変だし、

https://www.reddit.com/r/arduino/comments/4buizg/can_i_easily_rotate_a_max7219_dot_led_matrix_90/

こういう、90度回転するの簡単?、みたいな質問もあちこち
で投げられてるみたいだけど、多分王道は無くて、ビット
単位でちまちま変換するしかないはず。
それは面倒なのでパス。


フォントを扱ってウンヌンはちょっと置いておくことにして、

http://kousaku-kousaku.blogspot.jp/2008/08/arduinoledmax7219.html

ここを参考に、MatrixライブラリとSpriteライブラリを
使って、ドット単位でゴニョゴニョ表示してみて、時間
を眺めてみる。

まずは、X-Y軸で1ドットずつ埋めていくような処理。



オイラはX軸方向が長い横長画面が好きなので、X軸を
こっち方向にとってみたんだけど、第1象限になっちゃう
ので、XとYを入れ替えて縦長の第4象限にしたほうが
見やすいのかもしれない。

で、forループで、内側をY軸、外側をX軸にして1ドット
ずつ描いてみると…こうなった。
8行おきに、最初の行だけちゃんと書かれて、2行目から
8行目までは、逆順に表示される。

つまり、X軸方向は、0、7、6、5、4、3、2、1、ときて、
次は8、15、14、13、12、11、10、9、となる。

以前も触れた、

https://www.mgo-tec.com/blog-entry-ada-ledmatrix01.html

この、1行目だけ反転するっていう話と同じ現象。
(これはI2C制御のモジュールだったけど、どうやら
同じことがMAX7219モジュールでも蔓延しているみたい
だな)

なので、さっきの写真みたいに、17行目を描いたら次に
24行目、23行目…っていう順序の表示になっちゃう。


ビットマップにドットを表示する座標系がわかった
ので、例によって例のビットパターンを表示してみる。



でた。
X座標を8で割ってあまりがゼロ(8の倍数)のときだけは
そのままの座標として扱って、それ以外は「余り」を
8から引き算(下位3ビットを反転)するという処理に
してみた。





さて。

4連のモジュールは、どうやら二派に分かれていることが
判ったんだけど、ということは、SMDのMAX7219(うちに
届いたのと同じく、90度回転しているほう)を使っている
作例も、もちろんあちこちに見つかる。

http://nuneno.cocolog-nifty.com/blog/2016/07/48x8led-0f0f.html

こちらの例を追ってみる。misakiフォントを使って、
ひらがな・漢字表示するスケッチ。

実行してみると、見事ひらがなと漢字が表示される。

(ちなみに、今書いているこの日記、Windows7のIMEが
ウンコタレなので、「かんじ」と入力して変換してる
のに、「漢字」って候補が出てこない。辞書に無い
からか?と思って辞書登録してみたら、「登録済み」
になってる。ゲイツのバーーーーーカ)


で、このスケッチは、スケッチ中で指定されている文字列
をUTF16として扱って、文字をフォントから読み出して
表示しているみたい。

4文字表示なので、早速、「沙羅曼蛇」と入れてみる。

…文字化けする。外字だったか?

「プーヤン」と入れてみる。

…文字化けする。UTF16になってない?

スケッチのinoファイルをterapadで開いてみると…UTF8
だな。多分互換あるだろうから、間違えなさそうなんだ
けど。少なくともSHIFT-JISではない。ちなみに、この
スケッチのとおりの「さいたま」って打ち直しても文字
化けする。

なんか、文字を打ち直した途端に文字化けするってことは、
ファイルの文字コード起因っぽいんだけど、Arduino-IDE
環境の文字コード制御、どこでやってるかわからないし、
そっちは目的じゃないから、そうそうにあきらめる。



なんかなぁ…躓いてばかりだな。まぁ、やりたいことは
ドット単位でお絵かきすることでもなく、日本語フォント
で表示することでもなく、目的は8ドット単位のビット
イメージ処理だから、Matrixライブラリとか、Sprite
ライブラリとか使わず、misakiフォントも使わず、ビット
マップを直接出力するようなオレオレライブラリ方向に
舵を切る方が正解だな。

http://d.hatena.ne.jp/soundflower/20090516/p1

このあたりを参考に、簡単な8ドット単位のビットマップ
出力処理を考えよう。

それにしても、1列だけ除いて反転しちゃうの、すごい
厄介だな。
そもそも、Matrix/Spriteライブラリって、内部が
どういう風に処理されているかわからないけど、この
とおりのX-Y座標の順序で整列しているかはわからない
んだよな。

いちど、LEDマトリックス取り外して、基板パターンを
追ってみないと、配線自体がよくわからんかもしれん。
(オレオレライブラリを作ってみて、色々実験すれば
 推測は出来そうだけど)





http://www.afpbb.com/articles/-/3166161

こないだ、パプアニューギニアで地震っていう話は
地震情報で得ていたんだけど、日本に津波無いって
いう情報だけで安心してた。現地はかなりの状況
になってるんじゃないの?

規模がデカかったんだから、さもありなんって
感じだよな。
何かくだらない話よりも、こういうサポートのほうが
大事な気がするんだけどな。





https://twitter.com/Nabe_RMC/status/970262989830942720

EVのバッテリー、今のLi-ion二次電池だと、これから
大幅に軽量化とか性能アップとかは難しそうな気が
するんだけど、ふと思った。

二次電池で、かつ、空気電池って無いの?

https://ja.wikipedia.org/wiki/%E7%A9%BA%E6%B0%97%E9%9B%BB%E6%B1%A0

なんか、Li、O2の空気電池って、重さあたりのエネルギー
が結構でかそうなんだけど。
…課題は色々あって、解決策を探しているところなのかな。






Linux MintのOS入れ替えたの、設定やり直さないと。
とりあえず、やっぱり初期状態では10GBも無い。
これにRails環境入れても、たいした容量にはならない
はずだし、あと、VirtualBoxでCLI版Ubuntuの仮想OS
1個作って足しても、せいぜい+5GBだからなぁ。

あれから10GB以上増えてたの、何でだろう?やっぱ、
wxPythonをソースからビルドしたせいかな?
小容量SSDのノートで、ソースからビルドなんぞ
やるもんじゃないってことなのかな。



コメント ( 0 )