LSI Jiu-Jitsu

半導体とブラジリアン柔術

OLED 0.96インチで遊ぶ ~その6~

前回の ~その5~ に続いて今回もPICから表示を行ってみます。

表示する画像データは予め外部のEEPROMに格納しておき、I2Cバスを通してリードを行いOLEDへ送信するようにしました。

EEPROMは24LC256を使用しました。
秋月電子で100円でした。
1枚の画像データのサイズは128x64=8,192bit(1,024Byte)なので、32KByteの24LC256には最大32枚セットしておくことができます。

今回、画像データはフリー素材の馬が走っているアニメーションgifから作りました。
アニメーションgifをこちらのサイトで1枚づつに分解しておきます。

ysklog.net

分解した画像を ~その3~ で使用したgimpで128x64にリサイズしてpbmファイルに変換します。

そして、EEPROMへ書き込むにはHEXフォーマットにしておく必要があるので、スクリプトを通してpbmファイルをHEXファイルに変換します。


引数にpbmファイルとEEPROMへ格納するアドレスを16進数で指定します。
1枚当たり1,023Byteなので、0x400番地単位でピッタリ収まります。
使用したアニメーションgifは8枚で構成されていました。

$ ./pbm2hex.pl horse0.pbm 0000 >  eeprom.hex
$ ./pbm2hex.pl horse1.pbm 0400 >> eeprom.hex
$ ./pbm2hex.pl horse2.pbm 0800 >> eeprom.hex
$ ./pbm2hex.pl horse3.pbm 0c00 >> eeprom.hex
$ ./pbm2hex.pl horse4.pbm 1000 >> eeprom.hex
$ ./pbm2hex.pl horse5.pbm 1400 >> eeprom.hex
$ ./pbm2hex.pl horse6.pbm 1800 >> eeprom.hex
$ ./pbm2hex.pl horse7.pbm 1c00 >> eeprom.hex

HEXファイルをFTPからWindowsに移してAKI-PICプログラマー Ver.4を使って24LC256へ書き込みました。

f:id:mohran:20180611212709j:plain
f:id:mohran:20180611213250j:plain


本当はPICKit3を使ってMPLAB IPEからオンボードで書き込みたかったのですが、どうやら24LC256は対応していないようでした。
24LC256を選択できるのに転送できない。
赤丸は非対応と言う意味を理解するのに2時間ほどかかりました(笑)

f:id:mohran:20180611214549j:plain

そこで、旧版のPICKit3プログラマーを使おうとしたらPICKit3のファームウェアを書き換えないと使えないようでした。
しかしそのファームウェアはPIC16F18326には非対応なので、IPEを使うにはまたファームウェアを書き換えてと・・。
あまりにも面倒なので諦めてAKI-PICプログラマーを使うことにしたのです(笑)

回路とプログラムはこのようにしました。

f:id:mohran:20180611215031p:plain


1画面分の画像データをEEPROMからリードして内部変数に保持しておきOLEDへ送信します。
送信後は次の画面へと繰り返します。
I2Cバスのスピードは400KHzで毎フレーム全画素を書き換えていますが、モタつくことも無くスムーズに表示されました。

動画はこちらです。