this is documentation for my Arduino (and similar microcontroller) libraries. they exist to support fast, easy to use and appropriately-scaled real-time, event-driven coding practices. most of these require the use of an event loop strategy that is strongly implied by the Arduino team's loop() skeletal program structure.
all of this code is appropriately scaled for the Arduino environment. these are not dragged in from a "desktop" software environment, but coded specifically for good performance from minimalist hardware -- which means they are even faster on fast processors.
all of the major functions provided here are designed to be invoked repeatedly from loop(), as often as possible. with rare and documented exceptions all of the code thus inserted into loop() executes in tens of microseconds -- my code does not block.
in short, all of this is meant to be used within a particular strategy towards structuring code. documention on that strategy is forthcoming (fall 2015). for now this is the start of the component documentation.
the following objects are in the library at this time. click the link to go to the documentation page. they are all available from my github repository. they install in the usual way.
|SRTimer||timed event/time-as-event functions.||SRResources|
|SRButton||momentary pushbutton switch and digital sensor functions.||SRResources|
|SRCRC||CRC-8 polynomial functions.||SRResources|
|SRPRNG||8, 16, and 32-bit Marsaglia XORshift pseudo-random number sequence generators. much faster and somewhat smaller than built-in random(). 8 and 16 bit are far more than adequate for non-crypto purposes.||SRResources|
|SRLoopTally||simple tool for performance-checking your non-blocking code!||SRResources|
|SRMessage||very compact, generalized message-parsing system.||SRResources|
|SRSmooth||Exponential Smoothing function. see wikiledia entry for Exponential smoothing. "...a rule of thumb technique for smoothing time series data... Like any application of repeated low-pass filtering, the observed phenomenon may be an essentially random process, or it may be an orderly, but noisy, process. Whereas in the simple moving average the past observations are weighted equally, exponential window functions assign exponentially decreasing weights over time..."||SRSmooth|
|SRPID||proportional integral derivative functions of suitable scale for small controllers. integer and float versions. ideal for deriving change information from any proportional analog sensor. as well as typical closed-loop control.||SRPID|
|obsolete SRPID||this is the previous SRPID code, all integer. use the floating point version above. this integer version will be slightly faster in some cases, but it uses an array for the simple moving average integrator which means that parameter is not runtime tunable, and SMA has some noise issues.||old SRPID|
|Integrator||integration and averaging functions.||SRPID|
|Differentiator||simple differentiation functions.||SRPID|
|SRFlock||novel, simple, easy to use self-configuring radio network system that uses SRRF24 (below) for transport. built-in SRMessage support.||SRRadio|
|SRRF24||robust, fast, compact, thorough driver for absurdly inexpensive Nordic NRF24L01+ 2.4GHz radio module.||SRRadio|