秋月で「AE-ATM0130B3」というカラー液晶を買ったので、テストプログラムを作ってみました。もう、わざわざ「カラー」って言う時代じゃないかもしれませんが。
ソースと回路図はこちらで公開中です。
「AE-ATM0177B3A」と違って、今回は秋月のサンプルがしっかりあるので、すんなり出来ました。秋月のサンプルはArduino Uno用ですが、自分はArduino Pro Mini互換を使ってみました。
秋月のサンプルはRAMを割り当てない方式で表示しています。
ここからが問題。
液晶は240 x 240ピクセル、16ビットカラー(65536色)です。そのままマイコンのRAMを割り当てようとすると、240 x 240ピクセル x 16ビット = 115200バイト必要です。ATmega328PのRAM容量は2048バイトなので、どこをどうやっても無理(この56倍は必要)。
どうにかして、ATmega328PでRAMを確保できないか、考えてみたのですが、性能を落としまくることで対処してみました。
・解像度を1/4に(画素数 1/16)。
・1ピクセルあたり4色に(色数 1/16384)。
これなら、60 x 60ピクセル x (2÷8ビット) = 900バイト。許容範囲内です。
RAMの消費を1/128に抑えることができました。
このようにドットを4倍に拡大して表示します。カラーパレットをこまめに変更して4色しかないことを誤魔化しています。
表示の更新が遅いです。
SPIクロック8MHzで通信しているはずなのに、それでも遅い、、、これはもうマイコンの限界だと思います。描画エリアを削ったり、さらに工夫する必要があります。
高性能なマイコンで表示したら一気に解決ですが、それは当たり前なので、電子工作としては面白くない。
あと、この液晶は3V相当の電源が必要です。自分の場合、最初はダイオード3個で約3Vを作って入力してました。これでも問題なく動きます。
その後、電子工作警察に怒られそうだと思い、真面目に3.3V三端子レギュレータで入力しました。