Complete icon map: Bluetooth (f13 bit3) and battery (f13 bit4) with °C composition

- probed f[13] on blank panel: bit3=Bluetooth, bit4=battery icon,
  0x05=°C, 0x06=°F, bits5-7 unused
- combos verified live: 0x0D (°C+BT), 0x15 (°C+bat), 0x1D (°C+BT+bat)
- add ICON_* constants to temphummon.c; restore as active build
- update PROJECT_MEMORY.md with complete f[13] icon table
This commit is contained in:
temphummon dev 2026-09-24 17:56:39 +00:00
commit b5cf59b39a
3 changed files with 77 additions and 58 deletions

View file

@ -93,19 +93,29 @@ All three are **bit 5 (0x20) of the SECOND byte of the pair**, matching the manu
| **Decimal point (bottom)** | `f[8]` | bit 5 (0x20) | after bottom-line **ones** → `88.8` |
| **% sign (humidity)** | `f[10]` | bit 5 (0x20) | after bottom-line **tenths** → `88.8%` |
### Bluetooth / power icons (probed — NOT found, likely multi-bit or unpopulated)
### Bluetooth / power icons (FOUND! 🎯 — in f[13], not a special byte)
A single-bit probe of the remaining frame bytes (0 bits5-7, 4/8/10 bits 4/6/7,
14 all) found **no standalone Bluetooth or battery/power icon**. Bits found:
- byte 0 bit7 → a cross-wired glyph dot (top-ones region)
- byte 4 bit7 → a cross-wired glyph dot (bottom-ones region)
- byte 8 bit4 → caused an **I²C hardware timeout**
- most other candidate bits → blank
All status icons live in **`f[13]`**, the same byte as the °C/°F letter. The
manual's "3rd and 4th position on the 13th bit" = bits 3 and 4 of `f[13]`.
Probing on a blank panel confirmed each bit, and combos compose cleanly.
The Waveshare reference code does NOT drive any Bluetooth/power icon, and the
IST7134 datasheet doesn't name one either. Conclusion: if the icons exist on
the glass they are **multi-bit patterns** (like °C = 0x05), not a simple single
bit reachable by a bare frame write — not worth more bench time. Cosmetic only.
| f[13] value | Bits | Displays |
|:---|:---|:---|
| `0x01` | bit0 | part of C letter (standalone = black-control risk) |
| `0x02` | bit1 | degree sign ° line |
| `0x04` | bit2 | C/F letter strokes |
| **`0x05`** | bits0+2 | **°C** (degree + C) |
| **`0x06`** | bits1+2 | **°F** (per manual) |
| **`0x08`** | bit3 | **Bluetooth icon** |
| **`0x10`** | bit4 | **Battery/power icon** |
| **`0x0D`** | 0x05+0x08 | °C + Bluetooth |
| **`0x15`** | 0x05+0x10 | °C + battery |
| **`0x1D`** | 0x05+0x08+0x10 | **°C + Bluetooth + battery** |
| bits 5-7 | — | unused |
All compositions verified live on the panel. (The earlier "no icon found"
conclusion was wrong - the icons were in f[13] bits 3/4, which the first
probe had not isolated.)
### Verified glyph segment map (from probing)
@ -273,7 +283,7 @@ nix run .#flash
- [x] **Port Waveshare digit lookup table** — all 10 digits (0–9) verified working on the display
- [x] **Internal temperature sensor** — reads ESP32-H2 internal temp sensor, shows on display line 1, updates every 1s
- [x] **Find decimal point & % bits** — probing session mapped them: `f[4]/f[8]` bit5 = decimals, `f[10]` bit5 = %
- [~] **Power/Bluetooth icons** — single-bit probe found no standalone icon bits; likely multi-bit patterns or unpopulated (cosmetic, deprioritized)
- [x] **Find Bluetooth & battery icons** — `f[13]` bit3 = Bluetooth, bit4 = battery; combos with °C work (0x0D/0x15/0x1D)
- [ ] **Add humidity sensor** — wire up an external I²C sensor (SHT40, BME280, etc.) and show on display line 2
- [ ] **Configure Matter/Thread** — enable OpenThread / Matter components in `sdkconfig`
- [ ] **Implement Matter cluster** — temperature and humidity measurement clusters