YAS's VB.NET Tips
 
ラズベリーパイ活用
ラズベリーパイ活用 >> 記事詳細

2021/10/31

ELEGOOのArduino用2.8インチTFT液晶にビットマップを表示する①

| by:YAS
 Arduino用のTFT液晶をRaspberry Pi PICOにつなぎ、240 x 320ピクセルのBitmapを表示してみました。このLCDは5Vで動作しますが、横のCON1のピンを使うことで、3.3Vでも使うことができるようです。詳しくは、ELEGOOの製品ページに情報があります。
 今回は、下のようにPICOと接続しました。
 LCD Raspberry Pi PICO
 LCD_D0 GPIO0 (1pin)
 LCD_D1 GPIO1 (2pin)
 LCD_D2 GPIO2 (4pin)
 LCD_D3 GPIO3 (5pin)
 LCD_D4 GPIO4 (6pin)
 LCD_D5 GPIO5 (7pin)
 LCD_D6 GPIO6 (9pin)
 LCD_D7 GPIO7 (10pin)
 LCD_RD GPIO8 (11pin)
 LCD_WR GPIO9 (12pin)
 LCD_RS GPIO10 (14pin)
 LCD_CS GPIO11 (15pin)
 LCD_RST GPIO12 (16pin)
 GND GND (38pin)
 CON1の3.3V 3.3V (36pin)

 TFTに付属のArduinoのサンプル_9341uno.inoとShowBMP.inoを参考に、MicroPythonでBitmap画像を表示しました。LCDの初期化は_9341uno.inoの処理をそのまま使いました。ShowBMP.inoによると、ビットマップデータは赤5bit・緑6bit・青5bitの16bitで、上位8bitを先に、下位8bitを後に送信するようです。
 今回は、mem32でSIOのGPIO_OUT(0xd0000010)に書き込むことで、パラレル出力を制御しました。しかし、これでは1画面を更新するのに18.2秒かかりました。また、関数デコレーターに@micropytnon.nativeを指定しても、16.9秒かかり、実用的ではありません。(ArduinoUNOではSDカードの画像を11秒くらいで表示する。これも遅いけど。)だからと言ってC++を使うのは面倒くさいので、今後、PIOやDMAを使った高速化に挑戦したいと思います。

 下のコードは,MicroPython1.17をインストールしたRaspberry Pi PICOで作成・動作確認をしています。(同じフォルダに240 x 340ピクセル、24bitカラーの画像を「sample.bmp」という名前で配置してください。)


23:09