This repository contains a set of small projects designed to build foundational microcontroller knowledge. The exercises target essential peripheral subsystems such as GPIO, ADC, timers, PWM, UART, SPI, and I²C. The work follows the EWSkills Microcontrollers course, which provides:
- quick topic guides
- quiz questions
- hardware‑based tasks
This repo contains the code I wrote for the hardware-based tasks. All implementations are written for the Arduino Uno (ATmega328P).
Since I recorded a few of the tasks on video, here some examples:
- PWM LED control — multiple LEDs driven via hardware PWM; duty cycle sourced from ADC‑sampled potentiometer input.
- PWM‑based fade‑rate control — PWM update interval modulated using ADC input.
- Software‑generated PWM — PWM implemented manually using timer interrupts; duty cycle derived from ADC input; waveform verified using a logic analyzer.
- Interrupt‑driven pattern switching — external interrupt triggers pattern changes; button input software debounced.
- I²C LED control — Button press communicated via I2C to toggle LED.
- SPI LED toggle — Button press communicated via SPI to toggle LED.
pwm_led_control.mp4 |
pwm_fade_rate_control.mp4 |
software_generated_pwm.mp4 |
interrupt_pattern_switching.mp4 |
i2c_led_control.mp4 |
spi_led_control.mp4 |