M5AtomS3を使ってみた
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に設定すると何故かキッチリ表示されました。