M5AtomS3を使ってみた
 M5Atom MatrixにLCDを付けたような構成のマイコンボードです
M5Atom MatrixにLCDを付けたような構成のマイコンボードですPIOピンの配置は違いますし、MCUが異なりますが
内蔵デバイスはLCD以外は同じです。
IRリモコンとIMUもM5AtomMatrixのスケッチがそのまま使えます
※GPIOピンの変更は必要です
LCD GC9107
リセット手順が異なりますが、描画コマンドはM5Stack BASIC/CORE2のILI9342Cと同じです。リセットは、LCD-RST(G34)をLOWにしてからHIGHにします。
リセット後には120mSの待ち時間が必要です。
接続は
| 接続ピン | ||
|---|---|---|
| 機能 | ピン番号 | 説明 | 
| CS | 15 | Chip Select | 
| MOSI | 21 | Master In Slave Out | 
| CLK | 17 | Clock | 
| RS | 33 | Data / Command | 
| LCD-RST | 34 | Reset | 
| BL | 16 | Back Light | 
| SPI | 
|---|
| MODE 0 | 
| MSBFIRST | 
BLはPWM出力(anarogWrite() )で明るさを調整できます。
GC9107のコマンド
| 動作 | COMAND | PARAMETA | 
|---|---|---|
| Memory Access Control メモリと画面の対応(表示方向の設定) | 0x36 | パラメタ - 1Byte 横(0xE8) or 縦(0x48) | 
| COLMOD: Pixel Format Set メモリと表示色の対応(色指定方法の設定) | 0x3A | パラメタ - 1Byte 16bit色(0x55) or 18bit色(0x66) | 
| Sleep Out スリープモードからの復帰 | 0x11 | パラメタ - なし 【重要】コマンド送信後、電源が安定するまで(5m秒以上)待つ必要がある。 | 
| Enter Sleep Mode スリープモードに設定 | 0x10 | |
| Display ON 表示ON | 0x29 | パラメタ - なし | 
| Display OFF 表示OFF | 0x28 | |
| Display Inversion OFF 表示色反転 OFF | 0x20 | パラメタ - なし | 
| Display Inversion ON 表示色反転 ON | 0x21 | パラメタ - なし | 
| Normal Display Mode On 全画面表示 | 0x13 | パラメタ - なし | 
| Partial Mode ON 部分表示 | 0x12 | パラメタ - なし 範囲はPartial Area command(0x30)で指定 | 
| Partial Area 部分表示範囲指定 | 0x30 | パラメタ - 2Bayte + 2Bayte | 
| Column Address Set ドットデータ書き込みカラム位置 | 0x2A | パラメタ - 2Bayte + 2Bayte | 
| Page Address Set ドットデータ書き込みページ位置 | 0x2B | パラメタ - 2Bayte + 2Bayte | 
| Memory Write ドットデータ書き込み | 0x2C | パラメタ - N Bayte | 
| Vertical Scrolling Definition スクロール範囲設定 | 0x33 | パラメタ - 2Byte + 2Byte + 2Byte | 
| Vertical Scrolling Start Address スクロール開始アドレス | 0x37 | パラメタ - 2Bayte | 
コマンドは1バイトでパラメタはデータ扱いになります
RSをLOWにしてコマンドを送信、RSをHIGHにしてパラメタを送信の手順で使用します

描画方向の設定
描画方向は、Memory Access Control(0x36)コマンドのパラメタで設定しますパラメタ設定は▼の通り
| D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |
|---|---|---|---|---|---|---|---|---|
| コマンド | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 
| パラメタ | MY (Y軸方向) | MX (X軸方向) | MV (XY軸入れ替え) | ML (Y軸更新方向) | RGB (色割り当て RGB or BGR) | - | - | - | 

Dotの色指定
1Dot(ピクセル)の色を指定する方法(フォーマット)の指定は COLMOD: Pixel Format Set で行います。Memory Writeで書き込む値は 16Bitモードと18Bitモードで▼のようになります

描画手順
描画範囲を指定し、指定範囲を埋めるBitmapデータを送信する| 描画範囲 COLの指定 | 0X2A | SC,EC | 
|---|---|---|
| 描画範囲 ROWの指定 | 0x2B | SP,EP | 
| 描画データ送信 | 0x2C | Bitmapデータ | 

左上が0,0になる筈ですが、128x128の□を描画して確認したところ、何故か▼のように横に2ドット、縦に1ドット分ズレていました。
サンプルスケッチでは2ドットずらして表示しています。表示範囲を2~130,1~129に設定すると何故かキッチリ表示されました。

サンプルスケッチ
 GC9107-TEST.zip ※参考動画で使用しているDEMOのスケッチ
 GC9107-TEST.zip ※参考動画で使用しているDEMOのスケッチ