Releases: jfpoilpret/fast-arduino-lib
FastArduino 1.10 release
I am happy to announce the 11th major release of FastArduino platform.
Since release 1.9 (September 2022), the main changes are listed there.
This release brings the following changes and improvements:
- Generic display API on which LCD devices support can be easily added:
- 2D drawing primitives: point, line, polyline, polygon, rectange, circle, rounded rectangle
- Font support
- Bitmap support
- Small tools (in Python) to edit fonts and bitmaps for display API
- Support of well-known Nokia 5110 LCD
- New functor
FlashReader
to read an array of items from Flash memory - Few utilities added (
max
andmin
) - Few traits utilities added to find shortest integral type to hold a given constant
- A few fix or improvements of API documentation
- Build is now using AVR-GCC 12.1.0 (tested on fedora 37 distribution)
Known bugs and requests for enhancements: https://github.com/jfpoilpret/fast-arduino-lib/issues
The platform is well documented:
- a tutorial allows developers to discover and learn the platform step by step
- FastArduino core API is documented through doxygen and documentation is published here
- FastArduino comes with many examples covering all supported features and devices
I hope you'll enjoy playing with FastArduino platform; please submit enhancements you would like
to see in future versions or report issues you may discover.
FastArduino 1.9 release
I am happy to announce the 10th major release of FastArduino platform.
Since release 1.8 (October 2021), the main changes are listed there.
This release brings the following changes and improvements:
- Support for Grove 125KHz RFID reader
- Prevention of dynamic allocation (too dangerous on target AVR MCU)
- Code and data size improvement by removing
virtual
methods in Futures, ostreambuf - API simplification by removing useless Lifecycle support
- Improvement of
TonePlayer
API (newBeat
type) - Improve I2C support utilities (e.g. with functors)
- Add new bits utility functions
- Add
swap_bytes()
functions for 64-bits words - Fix bad includes of "streams.h" in some API (preventing proper use of "empty_streams.h")
- Fixing various issues in API documentation
Known bugs and requests for enhancements: https://github.com/jfpoilpret/fast-arduino-lib/issues
The platform is well documented:
- a tutorial allows developers to discover and learn the platform step by step
- FastArduino core API is documented through doxygen and documentation is published here
- FastArduino comes with many examples covering all supported features and devices
I hope you'll enjoy playing with FastArduino platform; please submit enhancements you would like
to see in future versions or report issues you may discover.
Notes on upgrading to 1.9 version
Several changes in 1.9 may break some existing programs.
- dynamic allocation disabled: if your code is using
new
ordelete
it will not compile anymore; this decision was made to avoid dynamic allocation in AVR MCU programs, because dynamic allocation may fragment the heap which size is too limited on AVR; it is always preferrable to use static data (or stack data) for everything. - ostreambuf
virtual
methods removed: if you use UART (hardware or software) for serial reception, you will need to register the used UART type as an ostreambuf listener withREGISTER_OSTREAMBUF_LISTENERS()
. - Future
virtual
methods removed: if you use I2C devices, you will need to callREGISTER_FUTURE_STATUS_LISTENERS()
,REGISTER_FUTURE_OUTPUT_LISTENERS()
, or their oppositesREGISTER_FUTURE_STATUS_NO_LISTENERS()
,REGISTER_FUTURE_OUTPUT_NO_LISTENERS()
. - if you use
TonePlayer
you will need to use newBeat
instances (instead of previously integral BPM) toplay_xxx()
methods.
You may check updated examples for concrete code showing the new adaptations needed.
FastArduino 1.8 release
I am happy to announce the 9th major release of FastArduino platform.
Since release 1.7 (September 2020), the main changes are listed there.
This release brings the following improvements:
- Support for VL53L0X Laser Time of Flight distance sensor
- Improvements to the I2C API:
- new utility methods in I2CDevice
- new set of common utilities in relation to Futures
- Improvements to the Futures API:
- new reset_() method allowing multiple reuses of a single Future instance
- changes to AbstractFurutesGroup API
- Improvements to the utilities API:
- template method to change endianness of intergal values (useful with I2C devices)
- Small improvements to the flash API
- Small improvements to the array API
- New "memory" API bringing few functions useful for memory issues debugging
- New "iterator" API, used internally by FastArduino
Known bugs and requests for enhancements: https://github.com/jfpoilpret/fast-arduino-lib/issues
The platform is well documented:
- a tutorial allows developers to discover and learn the platform step by step
- FastArduino core API is documented through doxygen and documentation is published here
- FastArduino comes with many examples covering all supported features and devices
I hope you'll enjoy playing with FastArduino platform; please submit enhancements you would like
to see in future versions or report issues you may discover.
FastArduino 1.7 release
I am happy to announce the 8th major release of FastArduino platform.
Since release 1.6 (November 2020), the main changes are listed there.
This release brings the following improvements:
- Support for ATmega164,324,644,1284 MCU
- Improve Future API
- Add support for optional Future listeners
- Add new FuturesGroup class, aggregating several Futures
- Fix small issue on ATtinyX5 Timer1
- Fix I2C callback wrong argument (with asynchronous I2C Managers)
- Fix HMC5883L support (inverted Y and Z values)
- Fix several issues with EEPROM API implementation
- Values not always properly writtent
- QueuedWriter writing to wrong EEPROM address sometimes
Known bugs and requests for enhancements: https://github.com/jfpoilpret/fast-arduino-lib/issues
The platform is well documented:
- a tutorial allows developers to discover and learn the platform step by step
- FastArduino core API is documented through doxygen and documentation is published here
- FastArduino comes with many examples covering all supported features and devices
I hope you'll enjoy playing with FastArduino platform; please submit enhancements you would like
to see in future versions or report issues you may discover.
FastArduino 1.6 release
I am happy to announce the 7th major release of FastArduino platform.
Since release 1.5 (January 2020), the main changes are listed there.
This release brings the following improvements:
- New API for "future" concept
- New API for "lifecycle" concept and dynamic proxies
- Global rework of the I2C support in order to allow asynchronous handling (on ATmega architecture only)
- Small improvements to Timer API
- Slight improvements to API of GPIO, PCI and PWM
- New "test" namespace with a few helper function used by some FastArduino test examples
Note that I2C API changes are unfortunately not fully compatible with existing programs:
- If your program uses FastArduino provided I2C devices, then small adaptations will be needed. All examples have been adapted to show these changes.
- If you have defined your own I2C device support, then you are out of luck: you will have to rewrite most of it, as I2C device API is now based on the new "future" concept.
Other API changes shall have no impact on existing programs.
Known bugs and requests for enhancements: https://github.com/jfpoilpret/fast-arduino-lib/issues
The platform is well documented:
- a tutorial allows developers to discover and learn the platform step by step
- FastArduino core API is documented through doxygen and documentation is published here
- FastArduino comes with many examples covering all supported features and devices
I hope you'll enjoy playing with FastArduino platform; please submit enhancements you would like
to see in future versions or report issues you may discover.
FastArduino 1.5 release
I am happy to announce the 6th major release of FastArduino platform.
Since release 1.4 (September 2019), the main changes are listed there.
This release brings the following improvements:
- Rework project directory structure to reduce the number of files in project's root directory
- Update make system to add support for USBtinyISP programmer
- Add documentation for adding support for new I2C and SPI devices
- Improve GPIO and PCI API to ease declaration of FastPin and PCISignal instances
(issue #74 thanks hreintke for this excellent suggestion). - Add support for MCP23008 GPIO expander (similar to MCP23017)
- Add support for MCP3x0x ADC chips family (note that only the MCP3008 chip has been tested; support for other chips has been implemented but could not be tested as I do not have these chips)
- Fix API documentation issues with some badly generated namespaces
Almost all API changes are compatible with existing programs. Note that if you use MCP23017 device, its namespace has been renamed from mcp23017
to mcp230xx
(this new namespace is shared between MCP23017
and MCP23008
devices).
Known bugs and requests for enhancements: https://github.com/jfpoilpret/fast-arduino-lib/issues
The platform is well documented:
- a tutorial allows developers to discover and learn the platform step by step
- FastArduino core API is documented through doxygen and documentation is published here
- FastArduino comes with many examples covering all supported features and devices
I hope you'll enjoy playing with FastArduino platform; please submit enhancements you would like
to see in future versions or report issues you may discover.
FastArduino 1.4 release
I am happy to announce the 5th major release of FastArduino platform.
Since release 1.3 (September 2019), the main changes are listed there.
This release brings the following new features and enhancements:
- Add support for Timer Input Capture Noise Canceler
- Add support for Analog Comparator feature
- Improve tone player API to support simpler transcription of music scores: durations are now based on music theory (whole notes, half notes, dotted notes...); ties, slurs and triplets are also supported; now you can provide a tempo (
bpm
) to the play API.
Also, in this release, an effort was made to clean up C++ code by explicitly adding declarations for copy constructors and assignment operators.
Do note the following API changes that break compatibility with programs developed with FastArduino 1.3:
devices::audio::TonePlay
anddevices::audio::QTonePlay
: these structs do not embed durations in milliseconds any more; they now use the newdevices::audio::Duration
enum to use music theory notes durations (whole notes, quarters, quavers...)devices::audio::TonePlayer
anddevices::audio::TonePlayer
: additional argumentbpm
(beats per minute) to allplay_XXXX()
methods.
All features have been tested on all supported targets.
Known bugs and requests for enhancements: https://github.com/jfpoilpret/fast-arduino-lib/issues
The platform is well documented:
- a tutorial allows developers to discover and learn the platform step by step
- FastArduino core API is documented through doxygen and documentation is published here
- FastArduino comes with many examples covering all supported features and devices
I hope you'll enjoy playing with FastArduino platform; please submit enhancements you would like
to see in future versions or report issues you may discover.
FastArduino 1.3 release
I am happy to announce the 4th major release of FastArduino platform.
Since release 1.2 (June 2019), the main changes are listed there.
This is mainly a release with bug fixes, but it also brings afew enhancements.
Do note the following API changes that break compatibility with programs developed with FastArduino 1.2:
devices::audio::ToneGenerator
: API removed or updated (no more duration handled here)devices::audio::QTonePlay
: structure moved out ofdevices::audio::TonePlayer
devices::audio::TonePlayer
: additional template parameterTONE_PLAY
(eitherTonePlay
orQTonePlay
; now aTonePlayer
instance can only play one type ofTONE_PLAY
.
All features have been tested on all supported targets.
Known bugs and requests for enhancements: https://github.com/jfpoilpret/fast-arduino-lib/issues
The platform is well documented:
- a tutorial allows developers to discover and learn the platform step by step
- FastArduino core API is documented through doxygen and documentation is published here
- FastArduino comes with many examples covering all supported features and devices
I hope you'll enjoy playing with FastArduino platform and submit enhancements you would like
to see in future versions or report issues you may discover.
FastArduino 1.2 release
I am happy to announce the 3rd major release of FastArduino platform.
Since release 1.1 (April 2019), the main changes are listed there.
Do note that the following API changes that break compatibility with programs developed with FastArduino 1.1:
- all
register_XXX()
methods butinterrupt::register_handler()
have been removed from API as now, all ISR registration is implicitly performed by constructors. namespace PWMPin
has been replaced withenum class PWMPin
to ensure you cannot use anyDigitalPin
when a PWM pin is required; this allows usage of PWM pins that are linked to more than one timer (e.g. on Arduino LEONARDO and MEGA).namespace InterruptPin
has been replaced withenum class InterruptPin
to ensure you cannot use anyDigitalPin
when a PCINT pin is required.namespace ExternalInterruptPin
has been replaced withenum class ExternalInterruptPin
to ensure you cannot use anyDigitalPin
when an INT pin is required.
All features have been tested on all supported targets.
Known bugs and requests for enhancements: https://github.com/jfpoilpret/fast-arduino-lib/issues
The platform is well documented:
- a tutorial allows developers to discover and learn the platform step by step
- FastArduino core API is documented through doxygen and documentation is published here
- FastArduino comes with many examples covering all supported features and devices
I hope you'll enjoy playing with FastArduino platform and submit enhancements you would like to see in future versions or report issues you may discover.
FastArduino 1.1 release
I am happy to announce the 2nd major release of FastArduino platform.
Since release 1.0 (February 2018), the following main changes have been implemented:
- Build is now using C++14, with AVR-GCC 7.2.0 (tested on fedora 28 distribution)
- Updated Watchdog API to add WatchdogRTT class
- Reworked sonar API to support timeout, higher performance and higher precision
- Redesigned ISR registration (no change in API though), reduce macros usage
- Updated coding guidelines to fit clang-format 6 (latest available package on fedora 28)
- Implemented MCP23017 chip support
- Completed core API documentation
- Completed tutorial for core API
All features have been tested on all supported targets.
Known bugs and enhancements: https://github.com/jfpoilpret/fast-arduino-lib/issues
The platform is well documented:
- a tutorial allows developers to discover and learn the platform step by step
- FastArduino core API is documented through doxygen and documentation is published here
- FastArduino comes with many examples covering all supported features and devices
I hope you'll enjoy playing with FastArduino platform and submit enhancements you would like
to see in future versions or report issues you may discover.