Skip to content
jsgf edited this page Sep 13, 2010 · 19 revisions

Modified Ice Tube Clock firmware

This is a set of heavily modified firmware for the Adafruit Industries Ice Tube Clock.

The internals are significantly different from the original firmware, but there are also a number of new user-visible features.

There is an ongoing thread about this firmware. Please post any questions, bug reports, feature requests, etc there.

This is a great firmware feature comparison chart.

Downloads

New User-visible Features

  • Four selectable seconds display modes:
    1. Normal seconds display
    2. AM/PM display (US region)
    3. “Dial” display (show seconds to 10second resolution around edge of a display digit, blinking center segment)
    4. None – just a blinking dot
  • Animated transitions between various screens (date/alarm/menu/etc)
  • Time-based auto-dim: set “morning” and “evening” hours and brightnesses
  • Alarm blinks brightness from min to max (even while snooze is active)
  • Alarm every day or only on weekends or weekdays
  • Animated transitions for moving around menu and other displays
  • Selectable snooze time
  • Don’t show leading ‘0’ on hours (in US region) or days
  • Drift correction

Work in progress:

  • Auto-detection of lightsensor to enable auto-dim functionality
  • Improved/simplified drift correction

Todo:

  • multiple alarms
  • selectable alarm tones
  • 2-deep menus

Internal changes

The internals have been considerably changed:

  • Central button state machine to handle debounce and repeat (avoiding a pile of repeated code on every button-read)
    • Incorporates “debounce crash” fix
  • Table-driven menu display
    • New menus are just a new table
    • All time/date display reuses the menu display code
  • All “application” logic moved to main loop
    • No display updates from interrupt routines
  • Double-buffered display updates, to allow for transitions
    • New display buffer is built up, then a transition updates the actual display
  • Much smaller code size (9.5k program size for baseline; 8.5k with new features; data size also much smaller)