Pico-Arduino
Raspberry PI Pico - Arduino API

Recently I was receiving my Raspberry PI Pico and I had the opportunity to play around with it. Actually most of the time I spent reading the Manuals... The conclusion: interesting - but a little bit too complicated. So I was quite happy to read that Arduino plans to add an official support for this Microcontroller.

However I did not want to wait for the official support to be available, so as a temporary solution, I decided to make my own Arduino API availale as a separate project.

Design goals

  • Provide a full implementation of the Arduino API
  • Provide additional easy to use C++ classes for the functionaity which is specific to the Pico
  • Keep the pico specific build process using cmake
  • Support of existing Arduino Libraries
  • Provide examples

Installation

  1. First you need to install the Pico C Framwork. Please follow the instructions and do not forget to define the PICO_SDK_PATH environment variable.
  2. Clone this project with
git clone https://github.com/pschatzmann/pico-arduino
  1. Define the environment PICO_SDK_ARDUINO_PATH variable to point to the project location.

Examples

Details can be found in the [examples directory](examples)

Documentation

The generated Class Documentation can be found in the doc folder

Pinout

It helps to know the functions of the pins. Here is a copy of the pinout provided by the official Raspberry Pi Pico Documentation:

Raspberry Pi Pico pin out diagram

If a method is requiring a pin, you can provide the GPIO number as integer or use the corresponding GP name as given in the sheet above.

The following calls are all identical:

digitalWrite(25, HIGH); // turn the LED on using integer
digitalWrite(GP25, HIGH); // the same with GP25 define
digitalWrite(LED_BUILTIN, HIGH); // the same with Arduino defines
digitalWrite(PICO_DEFAULT_LED_PIN, HIGH); // the same with Pico defines

Deploying a compiled Sketch

Deployment is very easy - just press the button on your Pico while plugging it to your computer via USB. This will automatically mount the Pico as external drive (RPI-RP2). Finally you just need to copy the generated uf2 file from your build directory to the drive.

That's it!

Project Status / Change History

The project status and change history can be found here