A lightweight driver library for controlling Würth eiSos ICLED matrices using STM32 timers and DMA.
This project enables precise PWM-based LED control, ideal for visual effects, matrix animations, and embedded lighting systems on STM32 microcontrollers.
- ✅ DMA-based PWM output using STM32 TIM1
- 🎨 24-bit GRB color control per LED
- 💡 105 LEDs supported out-of-the-box (configurable)
- 🌀 Built-in animations:
- Knight Rider
- Color Fade
- Starfield
- Snake pattern
- ↻ Effect switching via GPIO interrupt
- 💻 Fully documented with Doxygen
- ⚙️ Works with STM32CubeIDE and HAL
git clone https://github.com/MootSeeker/ICLED_STM32.git
Import the project as an existing STM32Cube project.
- Use Timer 1, Channel 1 (TIM1 CH1), mapped to PA8.
- Make sure DMA is enabled for this timer channel in STM32CubeMX.
- Ensure system clock is 32 MHz
Build the project and flash it to your STM32 board via ST-Link or DFU.
Button S2
(on GPIOB | GPIO_PIN_5
) cycles through the built-in effects.
Core/
├── Src/
│ ├── icled.c # LED driver logic
├── Inc/
│ ├── icled.h # Public driver API
Examples/
├── example_app.c # Demo effects & main animation handler
├── example_app.h # Effect function prototypes
Component | Purpose |
---|---|
STM32 MCU | With Timer & DMA support |
ICLED Matrix | Würth eiSos 7x15 or similar |
Button (e.g. S2) | Used to switch LED effects |
5V Power Supply | Powers the LED matrix |
ICLED_NightRideDemo()
– Classic red dot scannerICLED_KnightRiderColorFade()
– Warm glowing red/orange trailICLED_StarfieldEffect()
– Cyan background with blinking starsICLED_SnakePattern()
– Snake movement with direction and length logic
The entire library is documented with Doxygen.
Generate docs using:
doxygen Doxyfile
This project is licensed under the MIT License – Use it, share it, improve it! ✌️
See LICENSE for details.
📢 Questions or ideas? Open an issue on
👉 github.com/MootSeeker/ICLED_STM32
Let it shine! 💡