# 💡 LED Simple — мигающий светодиод на ESP32

Самый простой компонент репозитория: один светодиод, который мигает с фиксированным
интервалом. Точка входа для тех, кто впервые видит проект — до датчиков, шин I2C/UART
и классов.

## 📋 Документация проекта

| Файл | Что внутри | Кому |
|---|---|---|
| [GUIDE.md](GUIDE.md) | Учебное пособие: модульность (.h/.cpp), `const` vs `constexpr`, разбор кода построчно, самопроверка | Изучаешь проект впервые |
| [WIRING.md](WIRING.md) | Схема подключения светодиода и резистора | Собираешь железо |

## Описание

Программа настраивает `GPIO2` на выход и переключает его с интервалом 500 мс, зажигая
и гася подключённый через резистор светодиод.

## Программная архитектура

В отличие от остальных компонентов репозитория (см. [`COMPONENT_STANDARD.md`](../../COMPONENT_STANDARD.md)),
этот модуль **намеренно не использует класс-драйвер**: это осознанное отступление от
стандарта, а не недосмотр. `LED_simple` — вводный, "до-ООП" шаг учебной программы,
чья цель — показать модульность через обычные `.h`/`.cpp`-файлы со свободными функциями,
прежде чем в [`Components/2. LED_middle`](../LED_middle/README.md) появится
класс-драйвер (`LedController`), неблокирующая логика на `millis()` и вотчдог `isAlive()`.

| Файлы | Что внутри |
|---|---|
| `include/led.h`, `src/led.cpp` | Свободные функции `setupLED()`/`toggleLED()`, константа `LED_PIN`. Блокирующее мигание через `delay()` — сознательно простой вариант, разбор компромисса в [GUIDE.md, раздел 4](GUIDE.md#4-блокирующий-код--и-его-цена). |
| `src/main.cpp` | Точка входа: `setup()` инициализирует пин, `loop()` вызывает мигание. |

## Работа через CLI

```bash
cd "Components/3. LED_simple"
pio run -t upload && pio device monitor
```

> Окружение `esp32c6` в текущей версии ядра Arduino не собирается — ошибка компиляции
> внутри самого фреймворка (конфликт макроса `Serial`/`USBSerial` в `HardwareSerial.h`),
> не связана с кодом этого компонента (см. `COMPONENT_STANDARD.md`, раздел
> "Известные репозиторий-специфичные нюансы"). Используй `esp32dev` или `esp32s3`.


## Связанные материалы

- [Резистор](/docs/circuit_design/electrical-engineering/0.-components/rezistor/) —
  почему светодиоду нужен резистор, как читать номинал по полоскам и проверить мощность.
- [LED_middle](/docs/components/led_middle/) — следующий шаг: неблокирующее
  мигание на `millis()` и первый класс-драйвер.
