A single-button tally counter built on an Adafruit Feather RP2040 ThinkInk with its onboard e-paper (SSD1680) display. Runs on CircuitPython.
Press the button to increment a persistent count shown on the e-ink display (e.g. "days since fire alarm"). The count survives power loss by being stored in the microcontroller's non-volatile memory (NVM).
- Increment — press the button to bump the counter by one.
- Lock/unlock — hold the button (~4.5s) to lock the counter (displays a lock glyph) and prevent further increments/decrements; hold again to unlock.
- Reset — hold the button for 10s to zero the counter.
- Deep sleep — after 60s of inactivity the board clears the display and enters deep sleep, waking on the next button press to save power.
- Count and lock state are written to NVM, so they persist across resets and sleep cycles.
- Adafruit Feather RP2040 ThinkInk (250x122 SSD1680 e-paper display)
- Built-in board button (
board.BUTTON)
code.py— main CircuitPython application (seewhile Trueloop for the button/state machine).lib/— CircuitPython libraries (adafruit_epd,adafruit_display_text,adafruit_bitmap_font,adafruit_ssd1680,adafruit_framebuf).fonts/— Atkinson Hyperlegible Mono BDF fonts used for the counter and labels.sd/— placeholder for SD card contents.boot_out.txt— CircuitPython boot banner (board/firmware info written by the device).settings.toml— CircuitPython settings file (empty).
Copy the contents of this repo onto a CIRCUITPY-mounted Feather RP2040 ThinkInk (code.py at the root, alongside lib/ and fonts/). The board will run code.py automatically on boot.