悪乗りで3.2インチLCDも調べました
eBayのカタログから数種類のLCDを買っていたので、順番に3.2インチも
調べました。こちらはOPEN-SMARTと言うショップブランド?が付いたもので、
ポートの割り付けが他のものと異なっており、最初は動きませんでした。
でも、購入したのとは別のショップがMCUFRIENDのライブラリを改造したものを
案内していたのでそちらを使ったら動く様になりました。
これは、I2Cポートを内部で利用しており、それに便乗すれば、外部のデバイス
も簡単に繋ぐ事ができると思いますが、多少癖が有るので少し考えものかと
思いました。 以下、こちらで調べた結果です。
<3.2inch LCD の概要>
購入した「3.2inch LCD]」は240x400のLCDにタッチスクリーンとマイクロSDの
インターフェイスを装備したもので次の様なものでした。
1.Arduino UNO および MEGA 用のLCDシールド(OPEN-SMARTのショップ
ブランド品?)
2.ピン割り付けは2.4および2.8インチのものとは異なり、I2Cバスを
内部の温度センサーで利用し、SD用のSPIインターフェイスはLCDの
コント―ラ用と共有
3.LCDのコントローラは 型名:ili9326, 解像度:240x400, 16bit
(library : r/g/b = 5/6/5bits)カラー
4.ハードウェアによるスクローリングと反転機能をサポート
5.LCDはノーマリーホワイト型(リセット後は白画面)
6.タッチスクリーンは4線式
7.マイクロSDインターフェイスを装備
8.I2Cバス接続の温度センサーを装備
<関連資料>
1.グラフィックライブラリ
Adafruit_GFX : URL https://github.com/adafruit/Adafruit-GFX-Library
改造したMCUFRIEND_kbv : ショップでピン割り付けを変更したものが有る
様で次のURLから入手可能です。
URL https://drive.google.com/drive/folders/0B6uNNXJ2z4CxNFNyUVVLTjRGQkk?usp=sharing
ここから[OPEN-SMART] TFT LCD Shield 3.0inch 3.2inch.zipwを
ダウンロードしてその中のMCUFRIEND_kbvを使用、ここでは改造して
いないMUCFRIEND_kbvも利用する為に、こちら側の名前を
MCUFRIEND_kbv_3に変更して利用しています。
2.FAT16専用ライブラリ
これを利用するとプグラムメモリが15%程度小さくなりますが、今回
作成したものでは不要です。(作成したものは、標準のSDライブラリでも、
UNOの場合で80%程度の大きさです。)
URL https://github.com/greiman/Fat16
3.ビットマップファイル作成ツール
画像データの補正と変換 : Windows OS の ペイント
画像データのサイズ変更 Caesium Image Compressor
URL https://saerasoft.com/caesium/
<注意項目>
それぞれの機能のチェックを進めていく中で次の様な注意が必要な事が
判りました。
[実装上の問題]
3.3Vの電源ラインがSDカードの負荷で影響を受けている様で、画面の状態に
よっては、大きな容量のSDカードを挿入すると、SDカードの起動電流により
UNOが落ちる事が判りました。その為、上の写真の様に470μの電解コンデンサ
をSD用の3.3Vの電源ラインに挿入しました。これにより落ちる事は無くなり
ましたが、SDをアクセスする時に出る画面上のノイズは残りました。
SDカードの電流変動を抑える方法は他に有るのかも知れませんが、今は
見つかっていません。
[グラフィックライブラリ利用上の問題]
このボードではSDカードのSPIポートとLCDコントール用のポートが共有されて
います。その為、SDをアクセスしたらSPIモードを開放しないと描画処理が
再開できませんでした。ここではSPIの終了を指示する事でバスの開放を
行っています。(サンプルプログラムでは別な処理で使っています。)
<テスト内容>
SDカードのルートディレクトリ内のビットマップファイルをスライドショーで
表示させる事にし、次の様な動作を目標としました。
1.SDのルートフォルダ内のBMPの拡張子が付くものを順次チェックして
LCD上に表示
2.再生可能なものは、通常の非圧縮の24ビット形式のもののみ
3.スクリーンサイズとファイルの画像サイズが異なる時、スクリーンより
小さい時は画面中央に表示、スクリーンより大きい時は画像の中心をくり
抜いて表示
動作させた結果としては、2.8インチと同程度で、色の再現性は良く、
Arduinoの16ビットカラーでの表現の最大までに達している様に思われました。
また、SDアクセス時の画面上のノイズに関しても2.8インチと 同程度の様に
思いました。 (電解コンデンサが効いている?)
[コードとビットマップファイルサンプル]
コードとビットマップファイル関連の資料一式は次のURLからダウンロード
可能です。
関連資料一式
[動作状況]
動作状況は次のURLから確認できます。
調べました。こちらはOPEN-SMARTと言うショップブランド?が付いたもので、
ポートの割り付けが他のものと異なっており、最初は動きませんでした。
でも、購入したのとは別のショップがMCUFRIENDのライブラリを改造したものを
案内していたのでそちらを使ったら動く様になりました。
これは、I2Cポートを内部で利用しており、それに便乗すれば、外部のデバイス
も簡単に繋ぐ事ができると思いますが、多少癖が有るので少し考えものかと
思いました。 以下、こちらで調べた結果です。
<3.2inch LCD の概要>
購入した「3.2inch LCD]」は240x400のLCDにタッチスクリーンとマイクロSDの
インターフェイスを装備したもので次の様なものでした。
1.Arduino UNO および MEGA 用のLCDシールド(OPEN-SMARTのショップ
ブランド品?)
2.ピン割り付けは2.4および2.8インチのものとは異なり、I2Cバスを
内部の温度センサーで利用し、SD用のSPIインターフェイスはLCDの
コント―ラ用と共有
3.LCDのコントローラは 型名:ili9326, 解像度:240x400, 16bit
(library : r/g/b = 5/6/5bits)カラー
4.ハードウェアによるスクローリングと反転機能をサポート
5.LCDはノーマリーホワイト型(リセット後は白画面)
6.タッチスクリーンは4線式
7.マイクロSDインターフェイスを装備
8.I2Cバス接続の温度センサーを装備
<関連資料>
1.グラフィックライブラリ
Adafruit_GFX : URL https://github.com/adafruit/Adafruit-GFX-Library
改造したMCUFRIEND_kbv : ショップでピン割り付けを変更したものが有る
様で次のURLから入手可能です。
URL https://drive.google.com/drive/folders/0B6uNNXJ2z4CxNFNyUVVLTjRGQkk?usp=sharing
ここから[OPEN-SMART] TFT LCD Shield 3.0inch 3.2inch.zipwを
ダウンロードしてその中のMCUFRIEND_kbvを使用、ここでは改造して
いないMUCFRIEND_kbvも利用する為に、こちら側の名前を
MCUFRIEND_kbv_3に変更して利用しています。
2.FAT16専用ライブラリ
これを利用するとプグラムメモリが15%程度小さくなりますが、今回
作成したものでは不要です。(作成したものは、標準のSDライブラリでも、
UNOの場合で80%程度の大きさです。)
URL https://github.com/greiman/Fat16
3.ビットマップファイル作成ツール
画像データの補正と変換 : Windows OS の ペイント
画像データのサイズ変更 Caesium Image Compressor
URL https://saerasoft.com/caesium/
<注意項目>
それぞれの機能のチェックを進めていく中で次の様な注意が必要な事が
判りました。
[実装上の問題]
3.3Vの電源ラインがSDカードの負荷で影響を受けている様で、画面の状態に
よっては、大きな容量のSDカードを挿入すると、SDカードの起動電流により
UNOが落ちる事が判りました。その為、上の写真の様に470μの電解コンデンサ
をSD用の3.3Vの電源ラインに挿入しました。これにより落ちる事は無くなり
ましたが、SDをアクセスする時に出る画面上のノイズは残りました。
SDカードの電流変動を抑える方法は他に有るのかも知れませんが、今は
見つかっていません。
[グラフィックライブラリ利用上の問題]
このボードではSDカードのSPIポートとLCDコントール用のポートが共有されて
います。その為、SDをアクセスしたらSPIモードを開放しないと描画処理が
再開できませんでした。ここではSPIの終了を指示する事でバスの開放を
行っています。(サンプルプログラムでは別な処理で使っています。)
<テスト内容>
SDカードのルートディレクトリ内のビットマップファイルをスライドショーで
表示させる事にし、次の様な動作を目標としました。
1.SDのルートフォルダ内のBMPの拡張子が付くものを順次チェックして
LCD上に表示
2.再生可能なものは、通常の非圧縮の24ビット形式のもののみ
3.スクリーンサイズとファイルの画像サイズが異なる時、スクリーンより
小さい時は画面中央に表示、スクリーンより大きい時は画像の中心をくり
抜いて表示
動作させた結果としては、2.8インチと同程度で、色の再現性は良く、
Arduinoの16ビットカラーでの表現の最大までに達している様に思われました。
また、SDアクセス時の画面上のノイズに関しても2.8インチと 同程度の様に
思いました。 (電解コンデンサが効いている?)
[コードとビットマップファイルサンプル]
コードとビットマップファイル関連の資料一式は次のURLからダウンロード
可能です。
関連資料一式
[動作状況]
動作状況は次のURLから確認できます。