カテゴリー
IchigoJam

IchigoJam + MixJuice でグラフィック表示~有機ELディスプレイOLED~

IchigoJamから有機ELディスプレイ(OLED)へ、グラフィック表示する実験を行ってみました。
画像のダウンロードと転送にはMixJuiceを使用します。IchigoJam TへMixJuiceを接続し、さらにOLEDモジュールを接続すればハードウェアは完成です。
ハードウェアはIchigoJam TとMixJuice、OLEDモジュール。これらを接続するだけ超簡単。自己発光しているOLEDで見ると、より美しく見える。ぜひ実機へ表示してみてください。

必要なもの

必要なものは、IchigoJam T、MixJuice、OLEDモジュールです。ただし、OLEDモジュールのピン配列は、GND、VCC、SCL、SDAの順番になっているものを使用してください。ピン配列が異なる場合は、ブレッドボードなどで配線を入れ替える必要があります。

プログラム

下記は、MixJuiceから画像ファイルをダウンロードし、OLEDへ転送するためのプログラムです。MixJuiceを無線LANアクセスポイントへ接続してから、実行してください。1枚の画像のダウンロード時間に、2~3分かかります。
new
100 cls:?"OLED BMP":?"ダウンローダ":?:?"by":?"W.Kunino":gsb800
110 ifi2cw(60,#8A8,1,#8AA,6)?"E
120 B=-1:goto300
200 'LINE
210 cls:uart0:forI=0to15:?chr$(#E0+I);:next:?:?"Step ";B+1;"/8"
220 ifi2cw(60,#8A9,1,#700,128)?"E
300 'MJ
310 B=B+1:ifB<8uart1:?"MJ GET bokunimowakaru.github.io/MJ/pg05/bmp/ras/";B;".txt"
320 end
800 'INIT
810 let[84],#4000,33,#227F,#700,#D5AE,#8D80,#2014,#DA00,#8112,#D9CF,#DBF1,#A440,#AFA6
820 ifi2cw(60,#8A8,1,#8B0,18)?"E
900 'OUT
910 ifi2cw(60,#8A8,1,#8AA,6)?"E
920 for[98]=0to7:for[99]=0to15:copy#8A0,vpeek(7-[98],[99])*8,8:ifi2cw(60,#8A9,1,#8A0,8)?"E
930 next:next:rtn
run
本プログラムのライセンスはCC BY 国野亘 https://bokunimo.netです。
OLEDへグラフィックを転送し、表示したときの様子。拡大するとドットが目立ち、分かりにくい。実物のほうが美しい。IchigoJam ロゴは jig.jp (ichigojam.net jig.jp) の登録商標。イチゴの画像の一部に、パロディの考えに基づいて、ラズベリーパイ財団の権利物の影響を受けた図柄を使用。瓶入りのイチゴジャムは「いらすとや」のイラストを利用(権利表示不要で利用可能・http://www.irasutoya.com/2014/09/blog-post_65.html)。

仕組み

64ドット×128ドットの2値BMPファイルを作成し、IchigoJamのPCGキャラクタ(変更可能な文字フォント)へ変換したファイルをGitHubに置いてあります。下図は元のBMPファイルです(ブログへ掲載するためにPNG形式へ変更)。
GitHubへ置いた変換後のファイルは以下のようなテキストファイルです。このファイルをMixJuiceでダウンロードし、末尾の行のgoto200で、前記プログラムの行番号200以降を実行します。
poke#700,0,0,0,0,0,0,0,0
poke#708,0,0,0,0,0,0,0,0
poke#710,0,0,0,0,0,0,0,0
poke#718,0,0,0,0,0,0,0,0
poke#720,0,0,0,#C0,#C0,#E0,#F0,#F0
poke#728,#78,#B8,#FC,#9C,#FE,46,#DF,#BE
poke#730,#FC,#FC,#F8,#E0,#80,0,0,0
poke#738,0,0,0,0,0,0,0,0
poke#740,0,0,0,0,0,0,0,0
poke#748,0,0,0,0,0,0,#E0,#E8
poke#750,#F8,#E4,28,8,24,#F0,0,#C0
poke#758,#E0,#70,#F0,#70,#D8,#F8,#FC,#FE
poke#760,0,2,#84,2,0,2,0,24
poke#768,58,#B8,#BA,#E8,#E8,#DA,24,2
poke#770,0,10,0,2,#FC,#FC,#6C,#F8
poke#778,#F8,#F0,#E0,#C0,0,0,0,0
goto200
IchigoJamのPCGの容量は128バイト(16文字分)です。一方、OLEDモジュールの全体にグラフィックを表示するには1024バイトの容量が必要です。そこで、128バイトごとに8回に分けてデータを転送しています。

名刺を作ってみた

この仕組みを利用し、ボクの名刺を作ってみました。IchigoJam FANグループの一員という位置づけです(私はIchigoJamおよびjig.jpの関係者ではありません)。
IchigoJam + MixJuiceで、いまどき珍しい縦書きの名刺。私はIchigoJamのロゴにFANを追加した。
有機ELディスプレイOLEDへ表示したときの様子。行番号310の「ras」の部分を「wat」に変更するとダウンロードすることが出来る。

その他の画像配信

行番号310のGitHubのURL中の「ras」を、「wat」に書き換えると、「国野亘」の画像をダウンロードすることが出来ます。また、「por」にするとボクの似顔絵が表示されます。
ボクの似顔絵を表示してみた。普段は左手にグリコのポッキーを持っているが、消してみたところ、こぶしで威嚇しているように見える。ポッキーはあったほうが良い。

[応用編] 超ミニ掲示板 追記 2017/7/1 19:00

会社や展示会の受付などに、電子掲示板が置いてあります。応用編として、IchigoJam + MixJuice + OLEDモジュールで実現してみました。以下のプログラムの行番号400番台で、ダ
ンロードするコンテンツを切り替え、次々に画面を表示します。
new
100 cls:?"OLED BMP":?"ケイジバン":?:?"by":?"W.Kunino":gsb800
110 ifi2cw(60,#8A8,1,#8AA,6)?"E
120 B=-1:P=1:goto300
200 'LINE
210 cls:uart0:forI=0to15:?chr$(#E0+I);:next:?:?"Step ";B+1;"/8"
220 ifi2cw(60,#8A9,1,#700,128)?"E
300 'MJ
310 B=B+1:ifB>7goto500
320 uart1:?"MJ GET bokunimowakaru.github.io/MJ/pg05/bmp/";
330 goto 400+10*P
400 'Page
410 ?"ras/";B;".txt":end
420 ?"por/";B;".txt":end
430 ?"pin/";B;".txt":end
440 ?"wat/";B;".txt":end
500 'Next
510 WAIT 600
520 P=P+1:B=-1:ifP>4letP,1
530 ifi2cw(60,#8A8,1,#8AA,6)?"E
540 goto300
800 'INIT
810 let[84],#4000,33,#227F,#700,#D5AE,#8D80,#2014,#DA00,#8112,#D9CF,#DBF1,#A440,#AFA6
820 ifi2cw(60,#8A8,1,#8B0,18)?"E
900 'OUT
910 ifi2cw(60,#8A8,1,#8AA,6)?"E
920 for[98]=0to7:for[99]=0to15:copy#8A0,vpeek(7-[98],[99])*8,8:ifi2cw(60,#8A9,1,#8A0,8)?"E
930 next:next:rtn
run
本プログラムのライセンスはCC BY 国野亘 https://bokunimo.net です。
以下は、実行画面です。何の絵かわかるでしょうか?
DIPタイプのIchigoJamマイコンにつけられていたラベルを真似た図をダウンロードしてみた。図やIchigoJamのロゴはCC BY jig.jpのライセンスにしたがって使用。1枚の画像をダウンロードするのに、約2分を要する。実際に使用するときは、行番号510の待ち時間は、もっと長くしないと、いつも書き換え中になる。

IchigoJamでOLEDモジュールを使う方法

このところ、IchigoJamを使ってOLEDモジュールへ表示する記事について、いろいろと紹介してきました。これらをまとめてウェブページを作成中です。
IchigoJam用OLEDの全体をまとめたページはこちらです:
https://bokunimo.net/ichigojam/oled.html
その他
BMPファイルからの変換ツール(C言語)を下記に公開しました。OLEDが広まってくれば、横画面版や、JavaScript版を作るかも。
by ボクにもわかるIchigoJam用マイコンボード
 - 
Chinese (Simplified)
 - 
zh-CN
Chinese (Traditional)
 - 
zh-TW
English
 - 
en
French
 - 
fr
German
 - 
de
Italian
 - 
it
Japanese
 - 
ja
Korean
 - 
ko
Russian
 - 
ru
Spanish
 - 
es