Authorized Online Retailers:

Buy from USA Buy from UK Buy from DE Buy from IT Buy from FR Buy from ES ここでご購入を!

In the last lesson, we learned how to read analog data from the ADC pin. In this lesson, we will also read an analog signal from the ADC2 pin. However, this time, the input device is a potentiometer (adjustable resistor) instead of a photoresistor. We will also connect a servo motor to GP16, which can generate a PWM signal. The servo will rotate its arm when you rotate the potentiometer. Through this project, we will learn how to use servo blocks to rotate the servo arm.

  1. Raspberry Pi Pico board and microUSB cable
  2. A computer to run Thonny Python IDE
  3. Breadboard x 1
  4. Potentiometer x 1
  5. Servo motor x 1
  6. some jumper wires

In above circuit graph, you can see that:
Servo red wire connected to Pico Vbus pin(5V)
Servo brown wire connected to Pico GND
Servo yellow wire   connected to Pico PWM pin(GP16)
Potentiometer GND connected to Pico GND
Potentiometer VCC connected to Pico 3.3V
Potentiometer  middle pin connected to Pico ADC pin(GP28)

Making Blocks
Step 1: Create a New Project and Connect the Pico to the Serial Port

1)Click the New Project icon. You will see a My Project icon with a fancy name pop up (see Picture 2.1),
2)Click the new icon in My Projects.

Now you will enter a new graphic programming page. Please click the CONNECT button at the bottom of the page and connect your Pico board to your project.

3)Then your browser will pop up a Serial Port option menu. Please select Pico from the menu and click the Connect button.

If you cannot see Pico in the Serial Port menu, it means your Pico is not set up properly. You need to go back to Lesson 1, Step 1, and set up the Pico again.

After you connect the Pico to the Serial Port, your GUI Connect button will switch to the Disconnect button as follows:

Step 2: Build Graphic Coding Chips

1) Click on Chip -> Start, then move the Start chip to the coding area as follows:

2)Click on Loops -> Repeat while true and move this block just below the Start block as follows

3) Click on Variables -> Create Variable and name the variable “servo_val” as follows

4)Now you will see some new variable blocks. Move the “set servo_val to” block inside the repeat loop block as follows

5)From the Chip category, add a “Read Voltage” block to the “set servo_val to” block. Change the port from A0 to A2 as follows

Explanation: This block will read the voltage value from the ADC2 pin (GP28) and assign the value to the “servo_val” variable.

6)From the Chip category, add a “Print” block below the “set servo_val to” block.

7)Right-click and delete the “” golden block inside the Print block.

8)From the Variable category, add a “servo_val” block to the Print block as follows

9)From the Logic category, add an “if_do_else” block under the Print block as follows:
10)Add an “= ” block in the “if” block as follows:
11)From the Variables category, add a “servo_val” block in the “if” block, then change the “=” sign to “<" as follows

12)From the Values category, add a “0” block to the “if” block, then change the block value from 0 to 1 as follows


13)From the Action category, add a “servo pin set angle to” block to the “do” area, change the pin number from 0 to 15, and change the angle from 90 to 0 as follows:
14)Right-click the light purple area, duplicate a new “if_do_else” block, then insert the new block into the “else” area. Change the new if statement area from <1 to <2, and change the "set angle to" area from 0 to 90 as follows:

15)From the Action category, add a “servo pin set angle to” block to the “else” area, change the pin number from 0 to 15, and change the angle from 90 to 180 as follows

16)From the Chip category, add a “Wait 1 second” block below the outer “if_do_else” block, change the wait time from 1 to 0.5 as follows:
Now we have finished building the program. We can click the “START” button to run the program.

Step 3: Test the program

When you rotate the Potentiometer, the Servo arm will rotate accordingly. You can click the “Console” tag at the bottom, and you will see the console printing value changing as long as you rotate the Potentiometer.

Learn More about parts SKU:2021005900

No. Picture Product Name Link
1 Raspberry Pi Pico Board https://osoyoo.store/products/raspberry-pi-pico-flexible-microcontroller-board-based-on-the-raspberry-pi-rp2040-dual-core-arm-cortex-m0-processor-1-pc?variant=39875307864175
2 Servo motor https://osoyoo.store/products/micro-servo-sg90-blue-for-arduino-v2-0-robot-carmodel-lacc200610?variant=31648847560815
3 Infrared Sensor Module https://osoyoo.store/products/hc-sr501-pir-motion-sensor-for-arduino?variant=31957812838511
4 RFID Module and card https://osoyoo.store/products/osoyoo-rfid-module?variant=31970646130799
5 Push Buttons and Hats https://osoyoo.store/products/push-button-and-hats-5pcs?variant=39879253131375
6 LED(6 x White, 6 x Red, 6 x Yellow, 6x Green) https://osoyoo.store/products/led-packs-for-arduino?variant=31957816442991
7 Servo motor https://osoyoo.store/products/sg90-micro-servo-for-arduino-raspberry-pi-robot?variant=31957821096047
8 Piezo Buzzer Module https://osoyoo.store/products/piezo-buzzer-module-1pcs?variant=39879251656815
9 I2C LCD Display(16×2) https://osoyoo.store/products/i2c-lcd1602-display?variant=39875437101167
10 Philips Screwdriver https://osoyoo.store/products/phillips-screwdriver?variant=31930635780207https://osoyoo.store/products/single-channel-relay-module-for-arduino-raspberry-pi?variant=31955954401391
11 Solderless Prototype Breadboard https://osoyoo.store/products/solderless-prototype-breadboard-1pcs?variant=39879255457903
12 Potentionmeter (10K adjustable resistor) https://osoyoo.store/products/potentionmeter-10k-adjustable-resistor-3pcs?variant=39879281016943
13 40Pin M to M Jumper Wires https://osoyoo.store/products/40pin-m-to-m-jumper-wires?variant=39879256539247
14 20Pin M to F Jumper wires 15cm https://osoyoo.store/products/20pin-15cm-female-to-female-cable?variant=31930663305327