From c294e90302924561a2a4178bb3dbecd7c33dd45c Mon Sep 17 00:00:00 2001 From: pavel Date: Mon, 30 Mar 2026 21:42:05 +0300 Subject: [PATCH] added README.md --- README.md | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 80 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9e5c5d5..1068818 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,81 @@ -# led +# STM32 WS2812 LED Control (TIM2 Interrupt) -Управление светодиодной лентой по SPI с помощью платы разработки jzf407vet6 контроллера stm32 \ No newline at end of file +## 📘 Описание + +Данный проект демонстрирует управление адресной светодиодной лентой +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 +- Частота обновления зависит от настроек таймера