CLAUDE.md
Project Summary
This project uses an ESP32-S2 and a 240x240 round GC9A01 TFT display to indicate which of two systems is currently active.
At startup, a logo is displayed for approximately 10 seconds. After the startup period, the display shows either "SYSTEM A" or "SYSTEM B" based on the state of a GPIO input.
Development Goals
- Keep firmware simple and maintainable.
- Minimize memory usage.
- Avoid unnecessary dependencies.
- Ensure fast boot and reliable operation.
- Use Arduino IDE compatibility.
Hardware
MCU
ESP32-S2
Display
- GC9A01
- 240x240 pixels
- SPI interface
Input
Single GPIO input used to determine:
- HIGH = System A
- LOW = System B
Preferred Libraries
Display
Image Support
- TFT_eSPI sprite functions
- PROGMEM image storage
Display Behaviour
Startup
- Initialize display.
- Show startup logo.
- Hold logo for approximately 10 seconds.
Normal Operation
Display one of:
SYSTEM A
or
SYSTEM B
The display should update immediately if the input state changes.
Coding Standards
- Use clear descriptive variable names.
- Avoid dynamic memory allocation.
- Store constant strings in flash where practical.
- Keep functions small and focused.
- Comment hardware-specific sections.
File Structure
src/
├── main.ino
├── display.cpp
├── display.h
├── logo.h
└── config.h
Expected Features
Required
- Display initialization
- Startup logo
- GPIO monitoring
- System A/B status display
Optional
- Screen dimming
- Custom fonts
- Status icons
- Animated transitions
Notes
This is an embedded appliance-style device intended for continuous operation in a rack-mounted environment. Reliability and simplicity take priority over additional features.