Skip to content

Releases: SolemnScribe/arduino-shot-timer

Shot Timer v.2.0.0

27 Mar 19:58
Compare
Choose a tag to compare

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> (specifically LightChrono) replaces <StopWatch.h>
    • <PGMWrap.h> has been added to help store strings and thus save dynamic memory
    • <EEWrap.h> has been added to improve EEPROM 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 in millis(); 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 of uint32_t parTimes[10] (40 bytes) . Without these the program consumes 627 bytes (31%) of SRAM.

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

Known Issues

  • Enabling DEBUG with the present code results in OOM errors(too many DEBUG statements), particularly when editing par times, but possibly also when listening for shots.

Shot Timer v.2.0.0-beta.5

27 Mar 19:51
Compare
Choose a tag to compare
Pre-release

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

27 Mar 19:00
Compare
Choose a tag to compare
Pre-release

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

26 Mar 05:44
Compare
Choose a tag to compare
Pre-release

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

26 Mar 05:27
Compare
Choose a tag to compare
Pre-release

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

26 Mar 04:00
Compare
Choose a tag to compare
Pre-release

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

Known Issues

  • Enabling DEBUG with the present code results in OOM errors(too many DEBUG 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.

Shot Timer v.2.0.0-alpha.1

25 Mar 17:43
Compare
Choose a tag to compare
Pre-release

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> (specifically LightChrono) replaces <StopWatch.h>
    • <PGMWrap.h> has been added to help store strings and thus save dynamic memory
    • <EEWrap.h> has been added to improve EEPROM 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 in millis(); 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 of uint32_t parTimes[10] (40 bytes) . Without these the program consumes 620 bytes (30%) of SRAM.

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

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 many DEBUG 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.

Shot Timer v.1.0.0

21 Mar 01:38
Compare
Choose a tag to compare
Shot Timer v.1.0.0 Pre-release
Pre-release

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.