- 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
80 lines
2.2 KiB
Markdown
80 lines
2.2 KiB
Markdown
# 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 VFD
|
|
- `gaugecontroller.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` -> `DATA`
|
|
- `D47` -> `CLOCK`
|
|
- `D48` -> `STROBE`
|
|
- `D49` -> `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:
|
|
|
|
- `VFD`
|
|
clears the display and turns off decimal point and alarm bell
|
|
- `VFD 1234`
|
|
- `VFD 0123`
|
|
- `VFD DEAD`
|
|
- `VFD 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 value
|
|
- `VFD Decimal Point`: switch entity
|
|
- `VFD 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 `DEAD` or `BEEF` work
|
|
- 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
|