Releases: SolemnScribe/arduino-shot-timer
Shot Timer v.2.0.0
Shot Timer v.2.0.0
This release represents a major refactor of the code, with a few goals:
- Compatibility with Arduino v.1.6.8
- Replace libraries with ones easily available in the
Arduino->Sketch->Include Libraries
interface<MenuSystem.h>
replaces<MenuBackend.h>
<Chrono.h>
(specificallyLightChrono
) replaces<StopWatch.h>
<PGMWrap.h>
has been added to help store strings and thus save dynamic memory<EEWrap.h>
has been added to improveEEPROM
saving of settings<Adafruit_RGBLCDShield.h>
is unchanged<Wire.h>
is unchanged<avr/pgmspace.h>
is unchanged<toneAC.h>
is unchanged - and is now the only library from an external source: https://bitbucket.org/teckel12/arduino-toneac/
- Pull some of my own functions into internal libraries
"DebugMacros.h"
has been added to easily allow toggling of debug functions by commenting/uncommenting a single line"Pitches.h"
is unchanged"LegibleTime.h"
has been added to handle all functions of converting a time inmillis();
to a legible string in format:00:00:00.000
to a specified number of digits."LCDHelpers.h"
has been added to handle printing data from PROGMEM to the LCD, printing legible time to the LCD, and printing numbers to a specified number of digits to the LCD
- Reduce overhead
- v.2.0.0: 17,652 bytes (54%) of PROGMEM and 1,467 bytes (71%) of SRAM (without
DEBUG
)- Note: The majority of this overhead is in the reservation of
uint32_t shotTimes[200]
(800 bytes) and in the reservation ofuint32_t parTimes[10]
(40 bytes) . Without these the program consumes 627 bytes (31%) of SRAM.
- Note: The majority of this overhead is in the reservation of
- v.2.0.0: 17,652 bytes (54%) of PROGMEM and 1,467 bytes (71%) of SRAM (without
Features
- A timer that listens for shots, recording up to 200 shots in a string, for strings lasting into double-digit hours.
- A review mode which displays the shot #, time, split time with previous shot.
- Review mode can also display average split and rate of fire in shots/min
- User configurable par times
- Ability to toggle the par times on and off
- Ability to set up to 10 additive par beep times
- Setting for start delay, including: Random 1-4s, Random 2-6s, and 0-10 seconds
- Setting for rate of fire - calculation can be configured to include the draw (time to first shot) or not
- Setting for beep volume
- Setting for sensitivity (with options that will work for dry fire)
- Setting for echo rejection
- Settings are preserved when the device is turned off (
EEPROM
)
Hardware
- Arduino Uno R3
- Adafruit RGB LCD Shield
- Adafruit Electet Mic/Amp
- Piezzo Buzzer
Known Issues
- Enabling
DEBUG
with the present code results in OOM errors(too manyDEBUG
statements), particularly when editing par times, but possibly also when listening for shots.
Shot Timer v.2.0.0-beta.5
Changes
- Fixed the UX of scrolling - buttonUp always increments, buttonDown always decrements
- Fixed version number on display
- Fixed the code style of the cheap function names of the DEBUG helper
Remaining tasks
- none!
Shot Timer v.2.0.0-beta.4
Changes
- Added menu item under settings for Rate of Fire, to allow the user to set whether or not to include the draw(first shot) in rate of fire calculation
- Stored the Rate of Fire setting in EEPROM
- Code style is now updated and consistent with Google CPP style guide (with some minor differences)
- Comment style is now consistent
- Re-enabled EEPROM to prep for release
- Set sane default for g_beep_vol to prep for release
Remaining tasks before full release
- Fix UX of scrolling up and down on all menus for consistency (in some cases this increments, in some cases decrements)
Shot Timer v.2.0.0-beta.3
Fixed a regression in shot review rollover introduced when fixing the shot review state for an empty shot screen.
Shot Timer v.2.0.0-beta.2
Fixed #4 - With an empty shot string the review timer allows users to move between shot 0 and shot 1
Shot Timer v.2.0.0-beta.1
Shot Timer v.2.0.0-beta.1
- Fixed - #3 -
ParTimes displays 40 possible times, but the array is initialized to a length of 10 - No more blocker bugs
Remaining tasks before full release:
- #4 - With an empty shot string the review timer allows users to move between shot 0 and shot 1
- Code style updated for consistency (likely following style guidelines of Google CPP Code Standards, if not the standards themselves)
- Clean up # of DEBUG messages
Features
This alpha release has 100% feature parity with v1.0.0, including:
- A timer that listens for shots, recording up to 200 shots in a string, for strings lasting into double-digit hours.
- A review mode which displays the shot #, time, split time with previous shot.
- Review mode can also display average split and rate of fire in shots/min
- User configurable par times
- Ability to toggle the par times on and off
- Ability to set up to 10 additive par beep times
- Setting for start delay, including: Random 1-4s, Random 2-6s, and 0-10 seconds
- Setting for beep volume
- Setting for sensitivity (with options that will work for dry fire)
- Setting for echo rejection
- Settings are preserved when the device is turned off (
EEPROM
)
Hardware
- Arduino Uno R3
- Adafruit RGB LCD Shield
- Adafruit Electet Mic/Amp
- Piezzo Buzzer
Known Issues
- Enabling
DEBUG
with the present code results in OOM errors(too manyDEBUG
statements), particularly when editing par times, but possibly also when listening for shots.- Commenting out
DEBUG
lets the code run without OOM issues -DEBUG
statements will be removed upon final release.
- Commenting out
Shot Timer v.2.0.0-alpha.1
Shot Timer v.2.0.0-alpha.1
This release represents a major refactor of the code, with a few goals:
- Compatibility with Arduino v.1.6.8
- Replace libraries with ones easily available in the
Arduino->Sketch->Include Libraries
interface<MenuSystem.h>
replaces<MenuBackend.h>
<Chrono.h>
(specificallyLightChrono
) replaces<StopWatch.h>
<PGMWrap.h>
has been added to help store strings and thus save dynamic memory<EEWrap.h>
has been added to improveEEPROM
saving of settings<Adafruit_RGBLCDShield.h>
is unchanged<Wire.h>
is unchanged<avr/pgmspace.h>
is unchanged<toneAC.h>
is unchanged - and is now the only library from an external source: https://bitbucket.org/teckel12/arduino-toneac/
- Pull some of my own functions into internal libraries
"DebugMacros.h"
has been added to easily allow toggling of debug functions by commenting/uncommenting a single line"Pitches.h"
is unchanged"LegibleTime.h"
has been added to handle all functions of converting a time inmillis();
to a legible string in format:00:00:00.000
to a specified number of digits."LCDHelpers.h"
has been added to handle printing data from PROGMEM to the LCD, printing legible time to the LCD, and printing numbers to a specified number of digits to the LCD
- Reduce overhead
- v.2.0.0-alpha.1 uses: 17,516 bytes (54%) of PROGMEM and 1,460 bytes (71%) of SRAM (without
DEBUG
)- Note: The majority of this overhead is in the reservation of
uint32_t shotTimes[200]
(800 bytes) and in the reservation ofuint32_t parTimes[10]
(40 bytes) . Without these the program consumes 620 bytes (30%) of SRAM.
- Note: The majority of this overhead is in the reservation of
- v.2.0.0-alpha.1 uses: 17,516 bytes (54%) of PROGMEM and 1,460 bytes (71%) of SRAM (without
Features
This alpha release has 100% feature parity with v1.0.0, including:
- A timer that listens for shots, recording up to 200 shots in a string, for strings lasting into double-digit hours.
- A review mode which displays the shot #, time, split time with previous shot.
- Review mode can also display average split and rate of fire in shots/min
- User configurable par times
- Ability to toggle the par times on and off
- Ability to set up to 10 additive par beep times
- Setting for start delay, including: Random 1-4s, Random 2-6s, and 0-10 seconds
- Setting for beep volume
- Setting for sensitivity (with options that will work for dry fire)
- Setting for echo rejection
- Settings are preserved when the device is turned off (
EEPROM
)
Hardware
- Arduino Uno R3
- Adafruit RGB LCD Shield
- Adafruit Electet Mic/Amp
- Piezzo Buzzer
Known Issues
- #3 - ParTimes displays 40 possible times, but the array is initialized to a length of 10
- Enabling
DEBUG
with the present code results in OOM errors(too manyDEBUG
statements), particularly when editing par times, but possibly also when listening for shots.- Commenting out
DEBUG
lets the code run without OOM issues -DEBUG
statements will be removed upon final release.
- Commenting out
Shot Timer v.1.0.0
This release represents the initial, fully functional release of Shot Timer for Arduino.
Status: Deprecated
WARNING This release is 3 years old and will not run in the current Arduino IDE without significant refactoring and the addition of several external libraries/sketches/playground examples that you can find in code comments.