USB (Arduino and Adafruit_TinyUSB)

Two USB stacks are present in the core. Users can choose the simpler Pico-SDK version or the more powerful Adafruit TinyUSB library. Use the Tools->USB Stack menu to select between the two.

Pico SDK USB Support

This is the default mode and automatically includes a USB-based serial port, Serial as well as supporting automatic reset-to-upload from the IDE.

The Arduino-Pico core includes ported versions of the basic Arduino Keyboard and Mouse libraries. These libraries allow you to emulate a keyboard or mouse with the Pico in your sketches.

See the examples and Arduino Reference at https://www.arduino.cc/reference/en/language/functions/usb/keyboard/ and https://www.arduino.cc/reference/en/language/functions/usb/mouse

Adafruit TinyUSB Arduino Support

Examples are provided in the Adafruit_TinyUSB_Arduino for the more advanced USB stack.

To use Serial with TinyUSB, you must include the TinyUSB header in your sketch to avoid a compile error.

#include <Adafruit_TinyUSB.h>

If you need to be compatible with the other USB stack, you can use an ifdef:

#ifdef USE_TINYUSB
#include <Adafruit_TinyUSB.h>
#endif

Also, this stack requires sketches to manually call Serial.begin(115200) to enable the USB serial port and automatic sketch upload from the IDE. If a sketch is run without this command in setup(), the user will need to use the standard “hold BOOTSEL and plug in USB” method to enter program upload mode.