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 I decided to make my own Arduino API available as a separate project. In the meantime the official Arduino support is avaiable, but I still think that this project is quite useful because of it's unique design goals:
- Provide a complete implementation of the Arduino API so that we easliy use Arduino Sketches and Arduino Libraries on the Raspberry Pico
- Provide additional easy to use C++ classes for the Pico specific functionaity
- Keep the Pico specific build process using cmake so that we can use all existing C++ libraries.
- Use this project as just an additional cmake library
- Provide a full set of examples
In a nutshell we can profit from both: the advantages of the Arduino and the advantages of the Pico SDK.
- 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.
The subsequent installation steps are only necessary, if you want to use the ArduinoSketch.cmake includes e.g. to build the provided examples:
- Clone this project with
git clone https://github.com/pschatzmann/pico-arduino
- Define the environment PICO_SDK_ARDUINO_PATH variable to point to the project location.
Details can be found in the examples directory
The generated Class Documentation can be found in the doc folder
It helps to know the functions of the pins. Here is a copy of the pinout provided by the official Raspberry Pi Pico Documentation:
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
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!