Releases: bxparks/AceButton
Releases · bxparks/AceButton
1.10.1 - fix conflict with ArduinoCore-API boards
- 1.10.1 (2023-05-25)
- Remove unnecessary declaration of
__FlashStringHelper
inAceButton.h
.- Breaks boards using the ArduinoCore-API, which moved the
__FlashStringHelper
to thearduino::
namespace, while polluting
the global namespace anyway with ausing arduino::__FlashStringHelper
shim in an attempt to provide backwards
compatibility, which doesn't always work. - See Issue#120.
- Breaks boards using the ArduinoCore-API, which moved the
- Remove unnecessary declaration of
1.10.0 - add back SAMD21, SAMD51 to Tier 1; move Teensy boards to Tier 2; add HeartBeat event
- 1.10.0 (2023-05-24)
- Add
AceButton::eventName(event)
lookup function- Translates the event integer constant (e.g.
kEventDoublePressed
)
into a human readable string (e.g. "DoublePressed"). - Intended for development and debugging.
- Translates the event integer constant (e.g.
- Update supported boards and tiers
- Add SAMD21 and SAMD51 boards to Tier 1
- Add 2 SAMD boards from 2 different companies, to test their
Arduino Core software:- Seeeduino XIAO M0 (SAMD21 48MHz ARM Cortex-M0+)
- Adafruit ItsyBitsy M4 (SAMD51 120MHz ARM Cortex-M4)
- SAMD21 and SAMD51 boards are back in Tier 1, as long as they use
the traditional Arduino API instead of the new
Arduino-Core. - Fortunately most third party SAMD21 and SAMD51 boards continue to
use the traditional Arduino API.
- Add 2 SAMD boards from 2 different companies, to test their
- Move Teensy 3.2 to Tier 2
- This board is entering end-of-life.
- As well, the Teensyduino environment integrates with the Arduino
IDE and CLI in a way that's different than all other third-party
Arduino boards. Some of my automation scripts do not work with
Teensyduino, so it becomes very time consuming to test the Teensy
boards. - All Teensy boards are now in Tier 2 ("Should work but not tested
often").
- Add SAMD21 and SAMD51 boards to Tier 1
- Add HeartBeat event
AceButton::kEventHeartBeat
eventButtonConfig::kHeartBeatInterval
(default 5000)ButtonConfig::setHeartBeatInterval(uint16)t)
ButtonConfig::getHeartBeatInterval()
- See the Heart Best section in the README.md,
and the examples/HeartBeat sample application. - Memory size impact
- Increases flash size of
ButtonConfig
by ~150 bytes on AVR, and
~50 bytes on 32-bit processors. - Increases RAM size of
AceButton
by 3 bytes on AVR, and 4 bytes
on 32-bit processors.
- Increases flash size of
- Binary Encoded Buttons
- Derive formula of the number of diodes required to implement
binary encoded buttons forN
lines. - total diodes =
N * (2^(N-1) - 1)
- Derive formula of the number of diodes required to implement
- Add extensive Bugs and Limitations section
in the README.md. - Update examples/SimultaneousButtons
- Simplify transition logic, removing 'concurrent event' option, which
is too difficult to get right in the time
- Simplify transition logic, removing 'concurrent event' option, which
- Add
v1.9.2 - upgrade toolchain; downgrade SAMD21 support; no functional change
- 1.9.2 (2022-02-10)
- Fix incorrect subtraction of 2
uint16_t
integers in
various examples and README.md docs for 32-bit processors.- On 8-bit processors with
sizeof(int) == 2
, auint16_t - uint16_t
returns auint16_t
. - But on 32-bit processors with
sizeof(int) == 4
, auint16_t - uint16_t
returns anint
, which returns a negative number if the
unsigned integer rolled over. - The solution is to explicitly add a
(uint16_t)
cast, which is
harmless on 8-bit processors, but is required to produce the correct
value on 32-bit processors.
- On 8-bit processors with
- Upgrade various tool chains:
- Arduino IDE from 1.8.13 to 1.8.19
- Arduino CLI to 0.20.2
- Arduino AVR from 1.8.3 to 1.8.4
- STM32duino from 2.0.0 to 2.2.0
- ESP8266 from 2.7.4 to 3.0.2
- ESP32 from 1.0.6 to 2.0.2
- Teensyduino from 1.53 to 1.56
- No signficant changes except for
LadderButtonConfig
on ESP8266
(faster) and ESP32 (slower).
- Downgrade support for SAMD21 boards to new "Tier 3: May work but
unsupported".- I can no longer flash my SAMD21 boards as of Arduino IDE 1.8.19.
- This is a maintenance release. No functional change.
- Fix incorrect subtraction of 2
v1.9.1 - upgrade STM32duino to 2.0.0, SparkFun SAMD core to 1.8.3
- 1.9.1 (2021-08-10)
- Upgrade STM32duino Core from 1.9.0 to 2.0.0.
- MemoryBenchmark: Flash usage increases by 2.6kB across the board, but
static RAM goes down by 250 bytes. - AutoBenchmark: No change.
- Very little change to AceButton code itself.
- MemoryBenchmark: Flash usage increases by 2.6kB across the board, but
- Upgrade SparkFun SAMD Core from 1.8.1 to 1.8.3.
- No change observed in MemoryBenchmark or AutoBenchmark.
- Add
examples/SimultaneousButtons
, showing how to detect the simultaneous
press of 2 buttons.
- Upgrade STM32duino Core from 1.9.0 to 2.0.0.
v1.9 - support ATtiny85; support digitalWriteFast libraries; better LadderButtonConfig support
- 1.9 (2021-06-01)
- Split LadderButtonCalibrator
from LadderButtons for convenience. - Add preliminary support for ATtiny85 using
SpenceKonde/ATTinyCore. - Add LadderButtonsTiny, a demo of attaching
2 buttons to theRESET/A0
pin of the ATtiny85 micrcontroller using
a resistor ladder. This avoids wasting the RESET pin, freeing the other 5
GPIO pins for other purposes. - Update docs and examples for
LadderButtonConfig
and
EncodedButtonConfig
to prevent the creation of the unused
SystemButtonConfig.- Uses the 4-parameter
AceButton()
constructor to set the
buttonConfig
parameter explicitly tonullptr
. - Saves 30 bytes of flash and 26 bytes of RAM on AVR (e.g. ATmega328,
ATtiny83) processors.
- Uses the 4-parameter
- Split off
examples/Encoded4To2Buttons
from
examples/Encoded8To3Buttons
to make the usage of the
Encoded4To2ButtonConfig
andEncoded8To3ButtonConfig
classes more
clear. - Add
ButtonConfigFast1
,ButtonConfigFast2
, andButtonConfigFast3
.- Implementations of
ButtonConfig
which use thedigitalWriteFast
library. - Saves 100-400 bytes of flash on AVR processors.
- See README.md#DigitalWriteFast.
- Implementations of
- Split LadderButtonCalibrator
v1.8.3 - advise rate-limiting LadderButtonConfig due to problems with analogRead()
- 1.8.3 (2021-04-18)
- AceButton now has a
GitHub Discussion.- Use that for general questions and discussions.
- Reserve GitHub Issues
for bugs and feature requests.
- Add Rate Limit
warning onLadderButtonsConfig::checkButtons()
should be limited to
about 200 samples/second. This reduces the overhead of the slow
analogRead()
function, and avoids triggering a bug that disconnects the
WiFi on the ESP8266. - Add general Sampling Rate recommendation to
sample at about 5 ms intervals, or 200 samples/second. Add code sample
using non-blocking delay. - Update Makefiles used by EpoxyDuino for better compatibility with FreeBSD.
- Update ESP32 Arduino Core from v1.0.4 to v1.0.6.
- AceButton now has a
v1.8.2 - Update UnixHostDuino 0.4 to EpoxyDuino 0.5
- 1.8.2 (2021-01-22)
- Update UnixHostDuino 0.4 to EpoxyDuino 0.5.
- Re-add Teensy 3.2 in AutoBenchmark.
- No functional change in this release.
v1.8.1 - officially support STM32
- 1.8.1 (2021-01-18)
- Add official support for STM32 by validating on a "Blue Pill" board.
- Add scripts to automate collection of
AutoBenchmark
data. Add
benchmarks for STM32 microcontroller. - No functional change in this release.
v1.8 - add kEventLongReleased event when kEventReleased is suppressed for LongPress
- 1.8 (2020-11-21)
- Add
kEventLongReleased
event type which is triggered after a
kEventLongPressed
as a substitute forkEventReleased
when
kFeatureSuppressAfterLongPress
is used to suppress thekEventReleased
event. See the new Distinguishing Pressed and
LongPressed section in the README.md and
the new examples/PressedAndLongPressed
sample code. - Potentially Breaking: Completely remove
src/ace_button/AdjustableButtonConfig.h
. It was deprecated over 2 years
ago in v1.3.
- Add
v1.7.1 - add Table of Contents to README.md
- 1.7.1 (2020-11-12)
- Add Table of Contents to README.md.
- Regenerate MemoryBenchmark numbers for v1.7.
- No functional change in this release.