iikagenlabo

興味のあることを良い加減で研究していきます

M5Stackで画像表示 png2img PNGからビットパターン出力に対応

明日の天気の電光掲示板、切り替えタイミングを調整してより本物らしくなりました。
電球切れも再現してみました。

youtu.be

昔見たときもそうでしたが、ぼーっと見てしまいますね(笑)

ところでこの電光掲示板の表示は1枚の画像を表示しているのではなくて、電球がついているところをビットパターンで持ってデータを小さくして表示しています。

f:id:iikagenlabo:20190503135450p:plain

ドット絵エディタで作ったPNG画像をもとに、pythonで作ったツールでビットパターンに変換します。

png2imgはこちらからダウンロードできます。
良かったら使ってみてください。

github.com

M5Stackで「明日の天気」の電光掲示板

以前は駅の広告やビルの看板でよく見かけた「明日の天気」をM5Stackで再現しました。

f:id:iikagenlabo:20190430163143j:plain

 M5Stackは手のひらサイズの小さなマイコンです。
液晶パネルやボタンがついているので、電子工作をしなくても単体でプログラミングを楽しめます。

コンパクトな筐体の外観を見たら、もう電光掲示板を作るしかありませんね(笑)

youtu.be

内蔵WiFiを使って、実際の明日の天気を取得して表示しています。
気温や1時間ごとの天気をスマホで見られるのに、明日の天気だけというアバウトな感じが良いです。

そして本物はこちら。相鉄線横浜駅で現在も稼働中ということで撮影してきました。
他にも稼働しているところがあれば教えてください。

youtu.be

思ったより切り替えタイミングが早かったです。もう少しタイミングの調整が必要ですね。

M5Stack用、PNG → テキストコンバータ、8bpp出力対応

前回紹介しました、PNGをM5Stackで表示できるBitmapのテキストデータに変換するPythonツールに、8bpp(256色)の出力も追加しました。

16bppに比べて半分のデータサイズになるので、プログラムサイズも小さくできます。

ソースコードgithubのこちら。 github.com

使い方は下の通りです。-8 オプションをつけると8bpp出力になります。

python png2img.py -8 <pngfile>

実行したコンソールに出力されるテキストをコピーするか、リダイレクトを使ってファイルにしたものを加工して使います。

このツールを使って同じPNG画像を16bppと8bppで比較したのがこちらです。 f:id:iikagenlabo:20190427194350j:plain

左が8bppで右が16bppです。直接見ても差がわかりにくいのに、写真だとさらによくわかりませんね(笑)

8bppだと色の階調が少なくなり、コントラストを強めたような画像になります。でもM5Stackの画面の大きさなら十分な気もします。

こちらもテストで使ったコードを上げておきます。良かったら試してみてください。 github.com

PNGからM5Stackで表示できるBitmapのテキストデータに変換するPythonツール

M5Stackを買いました! どうやら人気らしくネットでの在庫がなくなっているようです。(2019.04現在)

f:id:iikagenlabo:20190423000752j:plain

何をしてよいのか分からなかったのですが、SDカードに入ったjpeg画像は簡単に表示できるということを知って、早速表示してみました。 ArduinoIDEはすでに入っていたので簡単なスケッチを書くだけです。

void setup(void) {
  M5.begin();
  M5.Lcd.drawJpgFile(SD, "/miku.jpg");
}

f:id:iikagenlabo:20190423000939j:plain

コードを書くよりも、16GB以下のマイクロSDカードを部屋で探す方が時間がかかりました(笑)

次はM5.LCD.drawRGBBitmapを使って、ドット絵などの小さい画像を表示させます。 画像を切り替えてアニメーションさせるために、SDカードの画像ファイルではなくプログラム内に画像データとして置きます。

youtu.be

このときに画像をテキストデータに変換するのですが、適当なツールが見つけられなかったので、簡単なコンバータをPythonで作りました。 ソースコードはこちら。 github.com

python png2img.py <pngfile>

とすると、画面にテキストデータが表示されます。 コピペするかリダイレクトでファイルにしてコードに埋め込んでください。

//  例
const unsigned short img0[] = {
  0x0000,0x0000,0x0000,0x3800,0xD800,0xC800,0xC800,0xC800,
  0xC800,0xC800,0xC800,0xC800,0xC800,0xC800,0xC800,0xC800,
  0xC800,0xC800,0xC800,0xC800,0xC800,0xC800,0xC800,0xC800,
  0xC800,0xC800,0xC800,0xC800,0xC800,0xC800,0xC800,0xC800,
};

DVをWindows Live フォトギャラリーを使って取り込むと時間がずれる

撮りためたminiDVをWindows Liveフォトギャラリーを使ってPCに取り込んでいた。
できたファイルを見てみるとなんか時間がずれている。

最初は「撮った時のビデオの時計がずれちゃってたのかなぁ」と思ってたけど、取り込むビデオが全部ずれていたのでちょっとおかしいと思い調べてみた。

すると下のような記事が引っかかった。

http://okwave.jp/qa/q7262139.html

なるほど、タイムゾーンの設定の9時間分ずれるのか・・。

しかし取り込むときにいちいちPCの時計を変えるのもめんどくさい。

これまたできたファイルを注意深く見てみると、プロパティにはちゃんと撮った日時が入ってるじゃないですか!

そこで、PCの時間はずらさずにそのまま取り込み後でファイル名を変えることにした。

ファイル名を変えるのはVixというソフト。普段は写真用に使ってました。

http://www.forest.impress.co.jp/lib/pic/piccam/picviewer/vix.html

これでDVの取り込みはなんとかなりそうです^^;