Support for a board is loaded by including feather/feather.h - this will pull in support for the appropriate board. The boards that are currently supported are

  • Feather M0-based boards; this has been tested with the Feather M0 basic and the Feather M0 with RFM95 LoRa radio.
  • The Feather M4 Express.

It may work on other M0 or M4-based boards, but these haven’t been tested.

The Board abstract base class

The Board class defines a few virtual methods common to all Feathers:

  • double voltage() returns the current battery voltage as read from the onboard voltage divider.
  • setup(int baudrate, bool wait) starts the serial console at the given baudrate; if wait is true, it will wait for a serial connection before continuing with the boot process. It will also load support for the %f verb in printf, and seed the random number generator.
  • uint32_t random() returns a random number; for boards that support a true random number generator, it will be a cryptographically valid random number generator; otherwise, it’s a best-effort random number generated by repeatedly sampling the unused analog pin.
  • seed uses a random number from Board::random to seed the Arduino random number generator.

Feather M0

The FeatherM0 class is instantiated using one of three constructors:

  • The default constructor, FeatherM0(), is a wrapper for FeatherM0(INPUT, UNUSED_ANALOG).
  • FeatherM0(int pin9Mode) is a wrapper for FeatherM0(pin9Mode, UNUSED_ANALOG).
  • FeatherM0(int pin9Mode, int unusedAnalog) explicitly defines the pin 9 mode and the unused analog port.

The Feather M0’s voltage divider is on pin 9; in order to be read, it has to be put in the INPUT mode. Afterwards, it will be reset to whatever the pin9Mode is. For example, when using the OLED featherwing (described later), it should be set to INPUT_PULLUP.

The unused analog pin is used for the random number generator as described above.

Feather M4

The FeatherM4 class is instantiated using a default constructor. It has a true random number generator that is used for the seeding process and for returning random numbers.