Code Monkey home page Code Monkey logo

arduino-shot-timer's Introduction

arduino-shot-timer

Shot Timer

Author: hestenet
Canonical Repository: https://github.com/hestenet/arduino-shot-timer
License: LGPL 3

Documentation

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.

Release History

The 2.x branch of Shot Timer stores its settings in EEPROM, and does not require an SD card interface for Arduino.

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.

Deprecated Releases

Initial build, before the migration from code.google.com to github. There are some incompatibilities with the latest Arduino IDE version in the menuBackend library used in this branch.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.