The Raspberry Pi Pico is a development board based on the RP2040 microcontroller. Its dual-core Arm Cortex M0+ microprocessor makes it an inexpensive and powerful board. It can be programmed in C++ and Python. The W version can also connect to WiFi.
Some card features
- Energy-saving “sleep” mode
- 2 × SPI, 2 × I2C, 2 × UART, 3 × analog inputs
- 16 × controllable PWM channels (all GPIOs can send a pwm)
- Integrated clock and timer
- Internal temperature sensor
- 8 × input state machines

Microcontroller features
The Raspberry Pi Pico microcontroller uses the Dual ARM Cortex-M0+ microprocessor. This processor operates at a clock frequency of 133 MHz. It has 264 kB RAM memory and 2000 kB Flash memory (for programming and data logging).
| ![]() |
Power supply
The Raspberry Pi Pico microcontroller operates over a voltage range of 1.8-5.5V, thanks to its on-board voltage regulator, while the microprocessor operates at 3.3V. In normal operation, the microcontroller consumes up to 90mA (if no power is supplied) and can accept a maximum current of 16mA on each of its IO pins.
Pinout
- Analog I/O : 3 (26, 27, 28)
- Digital I/O : 26 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 26, 27, 28)
- PWM pins: 16 (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)
- Communication Serial: 2 ((0, 1), (4, 5))
- I2C communication: 2 ((4, 5), (2, 3))
- SPI communication: 2 ((5, 2, 4, 3), (9, 10, 12, 11))

Basic C-code and pin identification
#include <Arduino.h>
const int analogPin=A0; // broches A0,A1,A2 ou 26,27,28
//(29=A3 Temperature sensor)
const int digitalInPin=2; // broches 0-22,26-28
const int digitalOutPin=4;
const int pwmPin=3; //2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17
int analogVal=0;
int digitalState=LOW;
int pwmVal=250;
void setup() {
Serial.begin(115200);
pinMode(analogPin,INPUT_PULLUP); // Argument OUTPUT, INPUT, INPUT_PULLUP
pinMode(digitalInPin,INPUT);
pinMode(digitalOutPin,OUTPUT);
pinMode(pwmPin,OUTPUT);
}
void loop() {
analogVal=analogRead(analogPin); // return int
Serial.print("Analog read : ");Serial.println(analogVal);
digitalState=digitalRead(digitalInPin); // return boolean
Serial.print("Digital read : ");Serial.println(digitalState);
digitalWrite(digitalOutPin,HIGH); // valeur LOW(0) ou HIGH(1)
analogWrite(pwmPin,pwmVal);// valeur 0-255 en fonction de analogWriteResolution();
}
Summary of features
| Microcontrôleur | |
| Nom: | RaspberryPiPico |
| Marque: | RaspberryPi |
| Caractéristiques | |
| CPU: | Dual ARM Cortex-M0+ |
| Tension d’alimentation : | 1.8-5.5V |
| Tension logique: | 5V |
| E/S digitales: | -1 |
| Entrées analogiques: | 0 |
| Flash: | 2000kB |
| SRAM: | 264kB |
| EEPROM: | NCkB |
| Fréquence d’horloge: | 133 MHz |
| Wifi: | Yes(W) |
| Bluetooth: | No |
| SD card: | No |
| Touch: | No |
| UART/SPI/I2C/I2S: | Yes/Yes/Yes/No |
