"SoftwareSerial" PIO-based UART ================================ Equivalent to the Arduino SoftwareSerial library, an emulated UART using one or two PIO state machines is included in the Arduino-Pico core. This allows for up to 4 bidirectional or up to 8 unidirectional serial ports to be run from the RP2040 without requiring additional CPU resources. Instantiate a ``SerialPIO(txpin, rxpin, fifosize)`` object in your sketch and then use it the same as any other serial port. Even, odd, and no parity modes are supported, as well as data sizes from 5- to 8-bits. Fifosize, if not specified, defaults to 32 bytes. To instantiate only a serial transmit or receive unit, pass in ``SerialPIO::NOPIN`` as the ``txpin`` or ``rxpin``. For example, to make a transmit-only port on GP16 .. code:: cpp SerialPIO transmitter( 16, SerialPIO::NOPIN ); For detailed information about the Serial ports, see the Arduino `Serial Reference `_ . Inversion --------- ``SoftwareSerial`` and ``SerialPIO`` can both support inverted input and/or outputs via the methods ``setInvertRX(bool invert)`` and ``setInvertTX(bool invert)``. SoftwareSerial Emulation ======================== A ``SoftwareSerial`` wrapper is included to provide plug-and-play compatibility with the Arduino `Software Serial `_ library. Use the normal ``#include `` to include it. The following differences from the Arduino standard are present: * All ports are always listening * ``listen`` call is a no-op * ``isListening()`` always returns ``true``