8bdae1da9be14d466216f7569d82dda1e14a3edc
- Replace gauge.py (MicroPython) references with gaugecontroller.yaml (ESPHome) - Update CLAUDE.md and README.md to document ESPHome-native API integration - Update LED wiring docs for separate main/indicator strips (D22/D36) - Refactor Arduino firmware to drive two WS2812 strips independently - Add per-gauge physical offset caching for main and indicator LEDs - Frame-limit breathe effect (16ms) to reduce unnecessary strip refreshes
arduino_gauge_controller
A dedicated gauge controller for Arduinos.
Overview
This repository contains:
Gaugecontroller/Gaugecontroller.ino: the Arduino Mega firmware for the stepper gauges, LEDs, and integrated HV5812-based VFDgaugecontroller.yaml: the ESPHome-based ESP32 firmware that exposes the gauges and VFD to Home Assistant via the native API
VFD Support
The integrated gauge controller now includes a 4-digit VFD with:
- 4 alphanumeric digits
- decimal point indicator
- alarm bell indicator
On the merged Arduino firmware, the HV5812 control pins are:
D46->DATAD47->CLOCKD48->STROBED49->BLANK/OE
The standalone VFD sketch used D51/D52/D53/D49, but 51/52/53 conflict with the gauge stepper pins in the integrated controller.
Arduino Serial Commands
The merged Arduino firmware accepts:
VFDclears the display and turns off decimal point and alarm bellVFD 1234VFD 0123VFD DEADVFD 8888.VFD BEEF!VFD 12AF.!
Rules:
- up to 4 characters are displayed
- valid characters are
0-9,A-F, and- .enables the decimal point!enables the alarm bell- shorter values are right-aligned
- leading zeroes are preserved if they are part of the input
Home Assistant Integration
The ESPHome firmware in gaugecontroller.yaml exposes entities to Home Assistant via the native API:
Gauge Controls
- Number entities for each gauge's target value (with unit conversion)
- Number entities for speed and acceleration (diagnostic)
- Rezero buttons for each gauge and all gauges
VFD Display
VFD Display: text entity for the displayed valueVFD Decimal Point: switch entityVFD Alarm: switch entity
The display is intentionally exposed as a text entity rather than a numeric entity so that:
- leading zeroes are preserved
- hexadecimal values like
DEADorBEEFwork - clearing the display is possible with an empty value
LED Controls
- RGB light entity for each gauge's backlight with effects (Blink, Breathe, Double Flash)
- Binary light entities for each gauge's red/green indicators and status lights
Diagnostics
- WiFi signal sensor
- Uptime sensor
- IP address and SSID text sensors
- Arduino Last Message sensor
Languages
Python
58.1%
C++
41.9%