Week 4. Embedded programming¶
Group Assignment¶
During this week, we completed a group assignment related to microcontroller programming. The goal of the week was to understand how a microcontroller works, how to write and upload a program, and to study the operation of input and output pins. We studied different types of microcontrollers ՝(Arduino and RP2040)՝ and their main features.
As a result of our group work, we understood the fundamental principles of microcontroller programming and were able to successfully upload and test our codes.
https://fabacademy.org/2026/labs/dilijan/assignments/week04/
Individual Assignment¶
This week, as part of the individual assignment, I worked with the Seeed Studio XIAO RP2040 microcontroller.
First, I downloaded and installed the Arduino IDE software. Then, I added RP2040 board support to the Arduino IDE using the Board Manager. For this, I added the following link in the Additional Boards Manager URLs field in Preferences:
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
After that, I downloaded and installed the RP2040 package from the Board Manager.
I placed the microcontroller on a breadboard and connected a potentiometer as an analog input. The potentiometer was connected as follows: - One end → 3.3V - The other end → GND - The middle pin (wiper) → Analog pin (A0)
Next, I programmed the microcontroller using the Arduino IDE environment. I wrote a program that reads the potentiometer value from the analog input (A0) and displays it in the Serial Monitor. In the code, I used the analogRead function to read the value and Serial.println to print it.
Using programming, I read the potentiometer value and sent it to the Serial Monitor. By rotating the potentiometer, the measured value changed, which confirmed that the analog input was functioning correctly.
In addition, I studied the RP2040 pinout diagram to better understand the function of each pin.
This helped me identify which pins support analog input, digital I/O, power, and communication protocols. Understanding the pinout made it easier to correctly connect the components and avoid wiring mistakes.
Through this experiment, it became clear how a physical movement (rotating the potentiometer) is converted into a digital value inside the program.
Voltage Calculation¶
I connected the potentiometer as a voltage divider: one end to 3.3V, the other end to GND, and the middle pin (wiper) to A0.
When I rotate the potentiometer, the ratio of the resistances changes, and the voltage at the A0 pin changes from 0V to 3.3V.
The voltage is calculated using the voltage divider formula:
[ V_{pin} = \frac{3.3V \cdot X}{10} ]
This means:
- When X = 0 → Vpin = 0V
- When X = 10 → Vpin = 3.3V
So, the A0 pin receives a voltage in the range from 0V to 3.3V.
ADC Values¶
The RP2040 microcontroller converts this analog voltage into a digital value (ADC conversion).
In the Arduino environment, a 10-bit resolution is used, which means:
- 0V → 0
- 3.3V → 1023
So, the voltage range 0 – 3.3V corresponds to the digital range 0 – 1023.
What I Did in This Experiment¶
In this experiment, I:
- Connected a potentiometer as an analog input
- Read the voltage from the A0 pin using a program
- Observed how rotating the potentiometer changes the digital value
This shows how a physical movement → changes the voltage → the microcontroller converts it into a number → and the program displays that value.