● 実験テーマ164
 
「WQVGAカラー液晶モジュールのキャリー基板の動作確認を、ESP32S3 Dev Moduleで試す」 
 (ヨッシー・サイトと同じスケッチで試してみる。)

■ 2026.01.01
  ・
ヨッシーさんと同じステッチで試してみる。年明けから開始。
   (1) ライブラリのインストール
     @ IDEを立上げ、左ペインの上から3番目の「ブック・アイコン」(ライブラリ)をクリック
     A 検索窓に「Arduino_GFX_Library」を入力
     B [GFX Library for Arduino by Moon On Our Nation]- [1.6.4 v] (インストール)をクリック



   (2) インストールされたソースコード(*.cpp, *.h)を確認(インストール後、自動的にはIDE側には表示されない)
     @ C:\Users\USER\Documents\Arduino\libraries\GFX_Library_for_Arduino\src下に保存されているのでここを開く。
     A <必要なファイルの場所>
        c:\Users\yoshito\Documents\Arduino\libraries\GFX_Library_for_Arduino\src\display\Arduino_HX8352C.cpp
        c:\Users\yoshito\Documents\Arduino\libraries\GFX_Library_for_Arduino\src\display\Arduino_HX8352C.h

       <ヨッシー重要コメント>
        ・この液晶のドライバICがHX8352Bですが、「Arduino_GFX_Library」ライブラリの中に使えるライブラリが無かったのでフォルダ内
         「\libraries\GFX_Library_for_Arduino\src\display\Arduino_HX8352C.cpp」を使ったのですが、初期化などおかしい動きをしました。
          データシートを見てもレジスタの使い方が違っていました。
          よって、
          「Arduino_HX8352C.cpp」を「Arduino_HX8352B.cpp」
           Arduino_HX8352C.h」 を「Arduino_HX8352B.h」 
           とコピーしてその後修正して使っています。-> ※ 修正後のファイルはマイ・ローカルフォルダにコピー済
           あと、「\libraries\GFX_Library_for_Arduino\src\Arduino_GFX_Library.h」に
           下記の様に追記して「HX8352B」を使えるようにします。 」

           #include "disply/Arduino_HX8352B.h-> 処理[済]


■ 2026.01.02
  ・頭を整理してから
   (1) プロジェクトフォルダ名:HX8352B_test
     新規プロジェクトを作成すると以下のファイルがプロジェクトフォルダ下に置かれる。
     @ HX8352B_test.ino // テストプログラム本体 
     A Arduino_GFX_Library.h // HX8352Bが使えるように追記修正

   (2) Arduino IDEで新規スケッチ(プロジェクト)を作成する方法を復習
    (2)-1. Arduino IDEを起動する
        @ 通常、IDEを起動すると、前回開いていたスケッチ、または新しいスケッチ
          (例:sketch_<日付>a.ino)が自動的に表示されます。
    (2)-2.新しいスケッチを作成する(もし自動生成されていなければ)
        @ メニューバーから 「ファイル (File)」 をクリックします。
        A ドロップダウンメニューから 「新規スケッチ (New Sketch)」 を選択します。
    (2)-3.スケッチを保存する(※ スケッチフォルダが作成される)
        @ 表示されたコード(setup()とloop()関数)を編集します。
        A メニューバーから 「ファイル (File)」 → 「保存 (Save)」 をクリックします
        B 名前を付けて保存ダイアログで、プロジェクトの名前(例:HX8352B_test)を入力し、保存場所を選択して「保存」をクリックします。
        C フォルダ下のファイル拡張子は.inoとなります。→ HX8352B_test.ino(プロジェクト名= メインのソースファイル:inoファイルと同じになる)

        D さらに新しいタブを追加する場合
         ・右上の[・・・]から、[タブの追加]クリック
         ・[新しいファイルの名前]ダイアログに入力
         ・スケッチをコピペ

        → これで今回のプロジェクトを作成しコンパイルしたところ、以下のエラー発生
           In file included from C:\Users\USER\Documents\Arduino\libraries\MyLib\HX8352B_test\Arduino_HX8352B.cpp:5:
           C:\Users\USER\Documents\Arduino\libraries\MyLib\HX8352B_test\Arduino_HX8352B.h:8:10: fatal error: ../Arduino_GFX.h: No such file or directory
           8 | #include "../Arduino_GFX.h"

           compilation terminated.
           exit status 1

           Compilation error: ../Arduino_GFX.h: No such file or directory

        → Arduino_GFX_Library.hに、 HX8352Bが使えるように追記したが、
           リンク先:C:\Users\USER\Documents\Arduino\libraries\GFX_Library_for_Arduino\src\display\
           下には追加してないかった。

        → リンク先:C:\Users\USER\Documents\Arduino\libraries\GFX_Library_for_Arduino\src\display\
           下にArduino_HX8352B.cppとArduino_HX8352B.hを追加
            IDEのタグに追加したArduino_HX8352B.cppは削除

        → 何故かコンパイルが途中で進まなくなる。


■ 2026.01.03
  ・
コンパイルが途中で進まなくなる。」と思っていたが、思っていたより時間が掛かっていただけだった。
   約15〜20分後に結果が出た。
   Compilation error: display/Arduino_HX8352B.h: No such file or directoryは出なくなったが以下の新たなエラーが発生

約15〜20分後に結果が出た。

C:\Users\USER\Documents\Arduino\libraries\MyLib\HX8352B_test\HX8352B_test.ino: In function 'void setup()':
C:\Users\USER\Documents\Arduino\libraries\MyLib\HX8352B_test\HX8352B_test.ino:40:21: error: 'YELLOW' was not declared in this scope
40 | gfx->setTextColor(YELLOW);
| ^~~~~~
C:\Users\USER\Documents\Arduino\libraries\MyLib\HX8352B_test\HX8352B_test.ino:46:21: error: 'GREEN' was not declared in this scope
46 | gfx->fillScreen(GREEN);delay(500);
| ^~~~~
C:\Users\USER\Documents\Arduino\libraries\MyLib\HX8352B_test\HX8352B_test.ino:47:21: error: 'BLACK' was not declared in this scope
47 | gfx->fillScreen(BLACK);
| ^~~~~
C:\Users\USER\Documents\Arduino\libraries\MyLib\HX8352B_test\HX8352B_test.ino:61:29: error: 'RED' was not declared in this scope; did you mean 'RER'?
61 | gfx->drawLine(0,y,w,y,RED);
| ^~~
| RER
C:\Users\USER\Documents\Arduino\libraries\MyLib\HX8352B_test\HX8352B_test.ino: In function 'void fillscr()':
C:\Users\USER\Documents\Arduino\libraries\MyLib\HX8352B_test\HX8352B_test.ino:81:19: error: 'RED' was not declared in this scope; did you mean 'RER'?
81 | gfx->fillScreen(RED);delay(200);
| ^~~
| RER
C:\Users\USER\Documents\Arduino\libraries\MyLib\HX8352B_test\HX8352B_test.ino:82:19: error: 'GREEN' was not declared in this scope
82 | gfx->fillScreen(GREEN);delay(200);
| ^~~~~
C:\Users\USER\Documents\Arduino\libraries\MyLib\HX8352B_test\HX8352B_test.ino:83:19: error: 'BLUE' was not declared in this scope
83 | gfx->fillScreen(BLUE);delay(200);
| ^~~~
C:\Users\USER\Documents\Arduino\libraries\MyLib\HX8352B_test\HX8352B_test.ino:84:19: error: 'CYAN' was not declared in this scope
84 | gfx->fillScreen(CYAN);delay(200);
| ^~~~
C:\Users\USER\Documents\Arduino\libraries\MyLib\HX8352B_test\HX8352B_test.ino:85:19: error: 'YELLOW' was not declared in this scope
85 | gfx->fillScreen(YELLOW);delay(200);
| ^~~~~~
C:\Users\USER\Documents\Arduino\libraries\MyLib\HX8352B_test\HX8352B_test.ino:86:19: error: 'WHITE' was not declared in this scope; did you mean 'FWRITE'?
86 | gfx->fillScreen(WHITE);delay(200);
| ^~~~~
| FWRITE
C:\Users\USER\Documents\Arduino\libraries\MyLib\HX8352B_test\HX8352B_test.ino:87:19: error: 'BLACK' was not declared in this scope
87 | gfx->fillScreen(BLACK);delay(200);
| ^~~~~

exit status 1

Compilation error: 'YELLOW' was not declared in this scope

       → エラーは全て、16bitカラーコードの定義が見つからない旨のエラー
          Arduino_GFX.hに定義されてたがマクロ名が単純なカラー名でないので、メインファイル:HX8352B_Test.ino(ヨッシー作成)の頭に追加することにした。

/*******************************************
* 16bit Color Difinition
*******************************************/
#define WHITE 0xFFFF
#define BLACK 0x0000
#define RED 0xF800
#define GREEN 0x07E0
#define BLUE 0x001F
#define CYAN 0x07FF
#define YELLOW 0xFFE0

       → 再コンパイル開始:10:20
          コンパイル完了 :10:34

       ※ やっとノンエラーで完了!!!
          約15分掛かった。

  ・ (→)クリックで書込みまで行った。未だボード単体のみの接続で液晶とは接続してない。
   → ところがまたここでネックが・・・
      (→)クリックだとまたコンパイルから始まり、その後、書込みとなる。
      書込みだけの機能は、IDEには無いようである。
      WEB検索したら、バッチファイルを作って実現されている方:https://mikecat.usamimi.info/arduino_gethex/
      がいたが、面倒なので今はやらない。
  
   → (→)クリックでコンパイルから始めることにした。未だ液晶は接続してない。

      10:55:スタート
      11:06:コンパイル〜書込みまで完了!!!

      今度は11分位で済んだ
      完了後、ボード上の、RGB LEDが緑点灯してた。未だ液晶は繋いでない。


■ 2026.01.04
  ・ボードと液晶を接続
  ・シリアルモニタ機能を使っているので、電源はPCから取る。
  ・6穴式のブレッドボードに、ESP32ボードを挿入し、ジャンパピンにて、液晶モジュールの44pinソケットコネクタに直接差し込み配線を行った。
   配線量が多いのでとても大変だったが何とか済んだ。ジャンパワイヤが途中で足りなくなり急遽作成した。


 <動作確認>
  @ 停止時のVCC= 3.251V(テスター実測値)確認→ OK
  A IDEを立上げ、前準備としてIDEのシリアルモニタを立上げる([ツール]- [シリアルモニタ])
  B ESP32ボードのUART-コネクタと、PC-USBコネクタ間に、USBケーブルを接続した途端に、ステッチが走りだす。  
  C 最初、シリアルモニタ表示が文字化けを起こしていたが、ボーレートを9600bpsから、115200bpsにしたら治った。



  B 配線も問題なかったようで一発で動きました。

  ※ 動作時のビデオを撮ったので参照してください。→ video001.mp3(8.38MB)

  ・PC無しのローカルで、ASUSタブレット付属の5V出力充電器から電源を取ってみたが問題なく動いた。

  ※ これで自力ではなかったが、WQVGA-LCDを無事動かす事が出来た。一安心です。
    (最初の目的は、ヨッシーさんのステッチとESP32を使った記事を参考にキャリーボード+WQVGA液晶のチェックを行うことだったので、目的は果たせたと思う)


<追記>
■ 2026.01.06

  ・
ヨッシーさんサイトに「efont」を使ったスケッチも紹介されているので試してみた。
   原典は去年の年賀挨拶で、2025年になっていますが、ステッチをいじって2026年に変更しました。

<efontについて>
 @ efont.hは主にM5Stackなどのマイコンボードで日本語表示を実現するためのライブラリ
 A Arduino IDEのライブラリマネージャから「efont」を検索してインストールするのが一般的。
 B efont.hファイル自体はライブラリの一部として含まれており、
   手動でインストールする場合は、ライブラリ(ZIPファイル)をダウンロードしてArduinoのlibrariesフォルダにコピーし、
   スケッチで#include <efont.h>と記述して使用。

<efontインストール手順>
 @ Arduino IDEを開く。
 A 「ツール」メニューから「ライブラリを管理...」を選択。
 B 検索ボックスに「efont」と入力して検索。
 C 「efont Unicode Font Data」などの関連ライブラリを見つけて「インストール」ボタンをクリック。 
 → [1.0.9 v] (インストール)

<新規プロジェクト作成>
 @ メニューバーから 「ファイル (File)」 → 「保存 (Save)」 をクリック
 A 名前を付けて保存ダイアログで、プロジェクトの名前(例:HX8352B_2026)を入力し、保存場所を選択して「保存」をクリック
 B 新たなウインドウが立上り、[HX8352_2026.ino]のタグが作成され、void setup()と、void loop()の雛形が表示される。
 C そこにステッチをコピペする。以下のhファイルをコピペ
  ・efontEnableJaMini.h
  ・efont.h // これ自体がフォントテーブルではないようだ。このファイルにインクルードされているefontFontData.hが本体ぽい。

  コピー元の場所:
   C:\Users\USER\Documents\Arduino\libraries\efont_Unicode_Font_Data\src\efontEnableJaMini
   C:\Users\USER\Documents\Arduino\libraries\efont_Unicode_Font_Data\src\efont

<コンパイル>
 @ (v)クリック

   16:31: start
   16:42: エラーメッセージ出た
   C:\Users\USER\Documents\Arduino\libraries\MyLib\HX8352B_2026\HX8352B_2026.ino: In function 'void setup()':
   C:\Users\USER\Documents\Arduino\libraries\MyLib\HX8352B_2026\HX8352B_2026.ino:92:19: error: 'BLACK' was not declared in this scope
   92 | gfx->fillScreen(BLACK);
   | ^~~~~
   C:\Users\USER\Documents\Arduino\libraries\MyLib\HX8352B_2026\HX8352B_2026.ino:93:21: error: 'YELLOW' was not declared in this scope
   93 | gfx->setTextColor(YELLOW);
   | ^~~~~~
   C:\Users\USER\Documents\Arduino\libraries\MyLib\HX8352B_2026\HX8352B_2026.ino:95:22: error: 'RED' was not declared in this scope; did you mean 'RER'?
   95 | printEfont(1, 68,3,RED, BLACK,(char *)" 明けまして");
   | ^~~
   | RER
   C:\Users\USER\Documents\Arduino\libraries\MyLib\HX8352B_2026\HX8352B_2026.ino:96:22: error: 'GREEN' was not declared in this scope
   96 | printEfont(1,118,3,GREEN, BLACK,(char *)" おめでとう");
   | ^~~~~
   C:\Users\USER\Documents\Arduino\libraries\MyLib\HX8352B_2026\HX8352B_2026.ino:97:22: error: 'BLUE' was not declared in this scope
   97 | printEfont(1,168,3,BLUE, BLACK,(char *)" ございます");
   | ^~~~
   C:\Users\USER\Documents\Arduino\libraries\MyLib\HX8352B_2026\HX8352B_2026.ino:98:24: error: 'CYAN' was not declared in this scope
   98 | printEfont(100,220,1,CYAN, BLACK,(char *)"今年もよろしくお願いします");
   | ^~~~

   exit status 1

   Compilation error: 'BLACK' was not declared in this scope

   → 前回と同じで、カラーコードの定義を*.inoファイルの頭に追加してみた。

   16:50: 再コンパイルstart
   17:01: 先ほどのエラーは出てこない。進捗バー進んだ。
   17:11: コンパイル完了  
   「最大1310720バイトのフラッシュメモリのうち、スケッチが522891バイト(39%)を使っています。
    最大327680バイトのRAMのうち、グローバル変数が22160バイト(6%)を使っていて、ローカル変数で305520バイト使うことができます。」

<書込み>
 @ ESP32ボードとPCをUSBケーブルで接続(ステッチ終了まで待つ)
 A (→)クリック(コンパイル+書込み動作になる)

   19:00:START
   19:12:コンパイル〜書込みまで完了


   Writing at 0x0007b475 [=======================> ] 80.5% 229376/285113 bytes... 

   Writing at 0x00081917 [========================> ] 86.2% 245760/285113 bytes... 

   Writing at 0x000871a5 [==========================> ] 91.9% 262144/285113 bytes... 

   Writing at 0x0008d2cf [============================> ] 97.7% 278528/285113 bytes... 

   Writing at 0x0008fb20 [==============================] 100.0% 285113/285113 bytes... 
   Wrote 523040 bytes (285113 compressed) at 0x00010000 in 4.4 seconds (953.7 kbit/s).
   Hash of data verified.

   Hard resetting via RTS pin...

   → 書込み終了後、自動リセットで実行される。
      問題なく新年の挨拶がefontで表示された。


● ESP32  Div Module 対 WQVGA LCD 接続表(Type2 16bit bus) 

ESP32   WQVGA LCD
======================================================
3V3   IOVCC-36, VCC-37, LEDA-43
GND    GND-44, LEDK1-42, LEDK2-41, LEDK3-40, LEDK4-39

     D0-NC
GPIO-0    D1-29
GPIO-1    D2-28
GPIO-2    D3-27
GPIO-3    D4-26
GPIO-4    D5-25
GPIO-5    D6-24
GPIO-6    D7-23
GPIO-7    D8-23 
                   D9-NC

GPIO-8    D10-22 
GPIO-9    D11-19
GPIO-10  D12-18
GPIO-11  D13-17
GPIO-12  D14-16
GPIO-13  D15-15
GPIO-14  D16-14
GPIO-15  D17-13

GPIO-39  RESET-12
GPIO-38  RD-31
GPIO-37  WR-32
GPIO-35  RS-33
GPIO-36  CS-34


※ ステッチの詳細については、原典の「ヨッシー・サイト」を参照してください。


← 実験テーマ1に戻る   TOP PAGEに戻る     実験テーマ165へ →