LilyGo T-Display AMOLED 1.64
The brightest screen in the lineup: a 1.64” 280x456 AMOLED on an ESP32-S3 with 16 MB of flash and 8 MB of PSRAM. Same silicon as the T-Display-S3 and nothing else in common — the panel rides a quad-SPI bus instead of an 8-bit parallel one, which is what leaves both 0.1” headers almost entirely free.
| Chip | ESP32-S3 (S3R8) |
|---|---|
| Flash | 16 MB |
| PSRAM | 8 MB |
| Max LEDs | 256 |
| Audio | ✔ |
| Display | 1.64" 280x456 ICNA3311/CO5300 AMOLED (QSPI) |
| Touch | ✔ |
| Storage | On-chip FAT (USB drive) |
| Network | ✔ |
| Update modes | Standalone (WiFi/OTA) · Loader (USB-drop) |
What it’s good for
Section titled “What it’s good for”Props where the screen is the prop — a wrist display, a gauntlet readout, a diagnostic panel on the side of a crate. AMOLED blacks are actually black, so white-on-black text and glowing instrument faces read the way they do in the reference art. The board also arrives with the things that usually cost you a weekend: capacitive touch, a Qwiic socket for sensors, and the house amp wiring already on contiguous pads.
Wiring
Section titled “Wiring”| GPIO | Can do | Notes |
|---|---|---|
0 | in / out | BOOT button, strapping |
1 | in / out / PWM / ADC | ADC1_CH0 / TOUCH1 |
2 | in / out / PWM / ADC | ADC1_CH1 / TOUCH2 |
3 | in / out / PWM / ADC | ADC1_CH2 / TOUCH3 (house I2S LRC) |
5 | in / out / PWM / ADC | ADC1_CH4 / TOUCH5 (house I2S BCLK) |
18 | in / out / PWM / ADC | ADC2_CH7 (house I2S DIN) |
21 | in / out / PWM | house amp GAIN |
47 | in / out / PWM | house amp SD/enable |
48 | in / out / PWM | house LED strip data |
38 | in / out / PWM | |
39 | in / out / PWM | MTCK |
40 | in / out / PWM | MTDO |
41 | in / out / PWM | MTDI |
42 | in / out / PWM | MTMS |
43 | in / out / PWM | U0TXD, Qwiic-UART socket |
44 | in / out / PWM | U0RXD, Qwiic-UART socket |
45 | in / out / PWM | strapping: VDD_SPI |
46 | in / out / PWM | strapping: boot mode |
The panel, the battery ADC and the BOOT button are not in that table on purpose: they belong to the board, and a show that targeted one would break it. Everything listed is on one of the two 0.1” headers.
House standard for this board — an LED strip’s data line goes to GPIO48,
which sits directly below two VBUS pads and a GND, so +5V/GND/DATA land on three
neighbouring holes. A MAX98357A-class amp goes on LRC=3, BCK=5, DIN=18, with
GAIN=21 and SD=47. A unit wired differently still wins: name the three
clock/data pins in an audio bus in config.json and the board follows.
The screen
Section titled “The screen”Brightness is a panel command, not a backlight pin — there is no PWM to fade, and nothing for a show to drive. The firmware also owns GPIO16 (silkscreened TFT_EN): it powers the panel, and the backend re-asserts it after deep sleep.
The Qwiic socket is not empty
Section titled “The Qwiic socket is not empty”The JST-SH socket beside the USB port and the header’s SCL/SDA pads are one
I2C bus, and two parts the firmware owns already sit on it: the touch
controller at 0x38 and the charger/PMU at 0x6A. A show that declares a part
at either address is refused by name at load rather than quietly breaking
touch or reconfiguring the charger.
Everything else plugs in and works. The loader predeclares the bus as qwiic,
so a sensor only needs:
"sensors": { "temp": { "driver": "tmp102", "bus": "qwiic", "addr": "0x48", "hz": 4 }}