CLAUDE.md 1.8 KB

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

  • TFT_eSPI

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.