feature/jc3248w535: Add Guition JC3248W535#796
Open
cosmicpsyop wants to merge 13 commits into
Open
Conversation
… partial flush fallback safety, backlight-gated flush,SCREEN_FEES_ENABLE guard
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Guition JC3248W535
Video Demo>>
Adds a complete display driver for the Guition JC3248W535 (AXS15231B, QSPI, 480×320 landscape) panel as used in some NerdMiner v2 devices. Biggest issue is a display flicker due to a complete frame buffer flush each tick, Mitigation gates backlight during flushes to eliminate visible redraw flicker.
Current flush / flicker strategy
Original problem: every gfx->flush() pushes the entire 480×320 framebuffer:
480 × 320 × 2 = 307,200 bytes
That visibly flashed the screen when it occurred every tick.
Included:
Rendering engine - PSRAM framebuffer (Arduino_Canvas) + separate bg_cache for artifact-free text erase — no more black boxes or ghosted digits when values change width. OpenFontRender TTF rasterizer for DigitalNumbers and NotoBold fonts. Hysteresis quantizers on hashrate and temperature to suppress per-tick snapshot oscillation
Backlight gating - jc_flushGated() turns the backlight off during the ~35ms panel write, back on after — dark period is below human perception. jc_backlight_enabled bool tracks intended state (v0.9.18: replaces fragile digitalRead on an output pin)
Smart flushing - Snapshot-based dirty detection — only pushes the 307KB framebuffer when displayed content actually changes (or every 60s safety net). jc_flushOrPushRect() is a no-op under partial-flush; end-of-frame handles the single flush (prevents flush storms)
Touch - AXS-touch I2C @ 0x3B, polled at NerdMiner's 10Hz cadence with 200ms debounce. Top-half tap → next screen; bottom-half tap → toggle Pool/Fees panel
Arduino_GFX_Library 1.6.0 (pinned — 1.6.1+ breaks AXS15231B QSPI init)
moononournation/Arduino_GFX#803
Fix - Replace board-specific fee guards with SCREEN_FEES_ENABLE
Features and diagnostics:
JPEG Slideshow with NerdMiner Stats (Experimental)
Slideshow screen — reads /pic/*.jpg (configurable), decodes via TJpgDec directly into the framebuffer MCU-by-MCU (no extra buffer needed), and renders a bottom stats overlay showing current time, BTC price, and block height. Images larger than the panel are auto-scaled to fit. Auto-advances on a configurable timer; bottom-half tap advances immediately, top-half tap returns to the next cyclic screen. Gracefully handles missing SD card or empty directory. JPEG decode failures display a human-readable error reason on screen instead of a raw code.
Recommended ImageMagick command format image compatible with library:
Subsystem overview
jc_pushRect()is validatedCredit