added README.md
This commit is contained in:
parent
2405daa4d9
commit
c294e90302
82
README.md
82
README.md
@ -1,3 +1,81 @@
|
|||||||
# led
|
# STM32 WS2812 LED Control (TIM2 Interrupt)
|
||||||
|
|
||||||
Управление светодиодной лентой по SPI с помощью платы разработки jzf407vet6 контроллера stm32
|
## 📘 Описание
|
||||||
|
|
||||||
|
Данный проект демонстрирует управление адресной светодиодной лентой
|
||||||
|
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
|
||||||
|
- Частота обновления зависит от настроек таймера
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user