Firmware examples for a custom Franzininho board based on the CH32V003 microcontroller using the ch32v003fun framework.
This repository provides a structured set of examples ranging from basic GPIO control to interactive applications with display, sound, and user input.
- GPIO (LED)
- Digital input (button)
- ADC (analog keyboard / inputs)
- Buzzer (passive)
- OLED display (SSD1306 via I2C)
- Simple UI and games
.
├── core/ # Hardware abstraction (drivers)
├── examples/ # Application examples
├── include/ # Global headers (funconfig.h)
├── platformio.ini
- VSCode with PlatformIO extension or
- CLI: https://platformio.org/
git clone https://github.com/your-user/franzininho-ch32v003.git
cd franzininho-ch32v003
pio run -e 01_blink -t upload
| Example | Description |
|---|---|
| 01_blink | LED blinking |
| 02_button | Button input control |
| 03_adc | ADC reading |
| 04_oled | OLED display test |
| 05_demo_01 | Integrated example |
| 06_buzzer | Simple buzzer tones |
| 07_buzzer_music | Music player (melodies) |
| 08_game_reflex | Reflex game (1 button + OLED) |
- Plays simple melodies such as Nokia and Mario themes
- Uses software-based tone generation
- Measures user reaction time
- Uses OLED, button input and buzzer feedback
- MCU: CH32V003F4P6
- OLED: SSD1306 (128x64, I2C)
- Button (digital input)
- Passive buzzer
- Analog keyboard (resistor ladder)
- The buzzer uses software-based tone generation
- PWM audio requires specific timer pins and is not used in this board configuration
This project is intended for:
- Learning embedded systems
- Teaching microcontroller fundamentals
- Rapid prototyping with CH32V003
- Building interactive embedded applications
- ADC keyboard decoding
- OLED menu system
- Non-blocking audio player
- Additional games
- Expanded documentation
MIT License
Fabio Souza Embedded systems engineer Founder of Embarcados
Contributions are welcome. You can:
- Open issues
- Suggest improvements
- Submit pull requests
This project evolves from simple examples into a small embedded platform combining:
- Input (button, ADC)
- Output (LED, OLED, buzzer)
- Interaction (games and UI)
It is a solid starting point for embedded learning and experimentation.