Skip to content

csc-chicken/Arduino-Helpers

 
 

Repository files navigation

Build Status Test Coverage Build Status GitHub

Arduino Helpers

Features

  • Containers: Arrays, Bit Arrays, Linked Lists, Smart Pointers.
  • Extended Input/Output: Use shift registers (e.g. 74HC595) and multiplexers (e.g. 74HC4051, 74HC4067) as if they were normal Arduino IO pins.
  • Hardware Utilities: Debounced buttons, long press buttons, button matrices, filtered analog inputs, MCP23017 Rotary Encoders, LED ranges, MAX7219 displays and LED matrices.
  • Filters: Exponential Moving Average filters, Hysteresis.
  • Math functions: min and max functions instead of macros, functions for uniformly increasing the bit depth of signals, all C++ standard library functions, vectors, quaternions, Euler angles.
  • Timing Utilities: Blink Without Delay-style timers.
  • C++ STL Implementation (partial): Some useful parts of the C++ Standard Template Library, adapted to work on AVR Arduinos. Includes the <type_traits>, <algorithm>, <numeric>, <new>, <array>, <bitset>, <optional>, <cmath>, <complex>, <cstdlib>, <cstdint>, <tuple>, <memory> (std::unique_ptr), <initialize_list>, <utility> and <limits> headers, among others.

These utilities were originally part of the Control Surface library, and were split off to be used as a stand-alone library, or as a template for other libraries.

Libraries that use the Arduino Helpers library include:

  • Arduino Filters: FIR, IIR filtering library
  • Control Surface: library for creating MIDI Control Surfaces, with knobs and push buttons, LEDs, displays, etc.

Documentation

The automatically generated Doxygen documentation for this library can be found here:
Documentation
Test coverage information can be found here:
Code Coverage
Arduino examples can be found here:
Examples

Supported boards

For each commit, the continuous integration tests compile the examples for the following boards:

  • Arduino UNO
  • Arduino Leonardo
  • Teensy 3.2
  • Arduino Due
  • Arduino Nano 33 IoT
  • ESP8266
  • ESP32

This covers a very large part of the Arduino platform, and similar boards will also work (e.g. Arduino Nano, Arduino Mega, etc.).

If you have a board that's not supported, please open an issue and let me know!

Known limitations

The Arduino Due toolchain provided by Arduino is very old, and has some configuration problems. As a result, some math functions are not available.
There is nothing I can do about it in this library, it's a bug in the Arduino Due Core.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 97.7%
  • Other 2.3%