Really tiny library to control multiplexed outputs.
It cycles among multiplexed outputs using a timer to control all pins.
This library requires uTimerLib libary; it's available on IDE Library Manager and also here:
https://github.com/Naguissa/uTimerLib https://github.com/Naguissa/uTimerLib/releases
You can get it from Arduino libraries directly, searching by uMuxOutputLib.
For manual installation:
- Get the ZIP from releases link: https://github.com/Naguissa/uMuxOutputLib/releases
- Rename to uMuxOutputLib.zip
- Install library on Arduino
You can find all documentation and extras in this repository: https://github.com/Naguissa/uMuxOutputLib_doc_and_extras
You can read documentation online here: https://naguissa.github.io/uMuxOutputLib_doc_and_extras/
uMuxOutputLib::uMuxOutputLib(uint8_t npins, uint8_t nmuxes, int *pins, int *muxes, unsigned int freq);
Parameters:
- npins: number of real pins, excluding muxes
- nmuxes: number of muxes pins
- pins: Array of all real pins, excluding muxes.
- muxes: Array of pins used to multiplex real pins.
- freq: Optional. Desired refresh frequency. Default is 70 (Hz). This frequency will be multiplied by number of muxes.
void uMuxOutputLib::setPinAbsolute(uint position, bool value);
Parameters:
- position: Position of the bit on linear fashion
- value: Value to be set
void uMuxOutputLib::setPinMuxPin(uint8_t pin, uint8_t mux, bool value);
Parameters:
- pin: Pin position on passed pins array (starting at 0)
- mux: Mux position on passed muxes array (starting at 0)
- value: Value to be set
void uMuxOutputLib::attachInterrupt();
Attaches internal timer interrupts to run multiplexed pins.
bool uSevenSegmentLib::activeMuxValue = false;
This variable is used to indicate the level of an active mux. All muxes will be set to inverse of this value when they are not active.
- You instantiate an object (usually a global scope object): uMuxOutputLib muxed(nPins, nMuxes, pinsArray, muxesArray);
- Then set any initial value on it on setup(): muxed.set(position, bool_value); or muxed.set(pin, mux, bool_value);
- And attach interrupts to start working (still on setup()): muxed.attachInterrupt();
- Then, wherever you want, you can change displayed values at your will using same methods as 2nd step.
Included on example folder, available on Arduino IDE.
- 6 leds cycling, connected using 3 real pins and 2 muxed pins
- Naguissa
- https://www.foroelectro.net/librerias-arduino-ide-f29/umuxoutputlib-libreria-arduino-para-controlar-mult-t293.html
- https://www.naguissa.com
Any code contribution, report or comment are always welcome. Don't hesitate to use GitHub for that.
- You can sponsor this project using GitHub's Sponsor button: https://github.com/Naguissa/uMuxOutputLib
- You can make a donation via PayPal: https://paypal.me/foroelectro
Thanks for your support.
Contributors hall of fame: https://www.foroelectro.net/hall-of-fame-f32/contributors-contribuyentes-t271.html