led/README.md
2026-03-30 21:42:05 +03:00

82 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# STM32 WS2812 LED Control (TIM2 Interrupt)
## 📘 Описание
Данный проект демонстрирует управление адресной светодиодной лентой
WS2812 с использованием таймера TIM2 на микроконтроллере STM32F407VET6.
При каждом срабатывании таймера: - переключается GPIO (индикатор
работы) - гасится вся лента - зажигается один светодиод - цвет
выбирается циклически - создаётся эффект "бегущего огня"
------------------------------------------------------------------------
## ⚙️ Основная функция
``` c
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim->Instance == TIM2)
{
HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_15);
for (int i = 0; i < LED_COUNT; i++)
{
setLED(i, 0, 0, 0);
}
setLED(pos,
colors[pos % COLOR_COUNT][0],
colors[pos % COLOR_COUNT][1],
colors[pos % COLOR_COUNT][2]);
WS2812_Send();
pos++;
if (pos >= LED_COUNT)
pos = 0;
}
}
```
------------------------------------------------------------------------
## 🧠 Логика работы
1. Проверка таймера (TIM2)
2. Переключение пина (индикация)
3. Очистка всех светодиодов
4. Установка одного активного светодиода
5. Отправка данных в WS2812
6. Смещение позиции
------------------------------------------------------------------------
## 🎯 Результат
Создаётся визуальный эффект: - один "бегущий" светодиод - автоматическая
смена цветов - плавное зацикливание
------------------------------------------------------------------------
## 🧩 Используемое оборудование
- Микроконтроллер: STM32F407VET6 (Cortex-M4, 168 MHz)
- Светодиодная лента: WS2812
- Таймер: TIM2
- GPIO: GPIOE PIN 15
------------------------------------------------------------------------
## 🖼️ Плата разработки
https://giteadocker2.fvds.ru/pavel/led/src/branch/main/jz%20f407vet6.png
------------------------------------------------------------------------
## 🚀 Примечания
- Убедитесь, что таймер TIM2 настроен и запущен с прерыванием
- WS2812 требует точного тайминга --- обычно используется DMA + PWM
- Частота обновления зависит от настроек таймера