Neopixel Output
The NeoPixel output for ESPGeiger gives intuitive feedback to the user by means of color and frequency.
The brightness of the NeoPixel can be configured through the Web interface configuration section. Setting to a value of 0 disables the NeoPixel output.
How the colour and flash rate are derived
The flash rate scales with the ratio of the current 1-minute CPM to the 5-minute average CPM (CPM5). When activity is rising relative to baseline the NeoPixel flashes faster; when activity is steady or falling it flashes slower. The interval is clamped to between 100 ms (≈10 flashes/sec) at maximum activity and 4 s at minimum.
The flash colour is derived from a Poisson z-score against the 5-minute baseline:
z = (CPM - CPM5) / sqrt(CPM5)
This is noise-aware - at low rates a small absolute change carries little statistical weight, while at high rates even a modest absolute change can be significant. The colour buckets:
| Condition | Colour | Meaning |
|---|---|---|
CPM < 0.01 and CPM5 < 0.01 | BLUE | No signal (no clicks observed) |
z > 3 | RED | Significant rise (≥3σ above baseline) - likely a real source |
z > 1.5 | YELLOW | Rising (≥1.5σ above baseline) - worth watching |
z < -1.5 | PURPLE | Dropping (≥1.5σ below baseline) |
| otherwise | GREEN | Within normal variation around baseline |
If a warning or alert threshold is configured and the current CPM crosses it, the NeoPixel colour switches to YELLOW (warning) or RED (alert) regardless of the z-score above.
Why the flashes look more regular than real clicks
The NeoPixel pattern is a trend indicator, not a 1:1 click visualization. Real radioactive decay events follow a Poisson process so individual clicks are irregularly spaced; the NeoPixel deliberately smooths this into an evenly-paced flash whose rate reflects activity vs baseline. For per-click visual feedback, see the dedicated blip LED (GEIGER_BLIPLED build flag, also exposed as the “External LED Pin” configuration option on supported boards).