Основы работы со светодиодами
Изучите принципы работы светодиодов, научитесь подключать их к ESP32 и создавать эффект мигания.
Подготовка оборудования
ESP32 DevKit
Любая версия (30/38 пинов)
Светодиод
5мм Красный/Зеленый/Синий
Резистор
220–330 Ом (защита)
Breadboard
400 или 800 точек
Как работает светодиод
Полярность
Светодиод пропускает ток только в одном направлении. Важно правильно определить полярность перед подключением.
Анод (+)
Длинная ножка
Катод (-)
Короткая ножка
Защитный резистор
ВНИМАНИЕ
ESP32 работает от 3.3В. Без резистора ток будет слишком большим и светодиод сгорит.
Формула расчета:
R = (Uпитания - Uled) / Iled
R = (3.3В - 2В) / 0.015А ≈ 220 Ом
Схема подключения
ESP32 Установите модуль на макетную плату
GND Соедините пин с синей шиной минуса
LED Вставьте светодиод, соблюдая полярность
GPIO 18 Подключите резистор к цифровому пину
Программирование
Настройка Arduino IDE
Откройте Файл → Настройки
Добавьте ссылку на пакет в поле Additional Boards Manager URLs
Установите esp32 через Менеджер плат
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Вид в Arduino IDE
Возможные проблемы
Светодиод не горит вообще ↓
Проверьте полярность. Скорее всего, вы перепутали анод (+) и катод (-). Вытащите светодиод, переверните на 180° и вставьте обратно.
Ошибка "Failed to connect to ESP32" ↓
При загрузке кода, когда появится надпись "Connecting...", нажмите и удерживайте кнопку BOOT на плате ESP32 до начала записи.
Светодиод горит очень тускло ↓
Возможно, вы использовали слишком мощный резистор (например, 10 кОм). Используйте резистор 220 Ом (Кр-Кр-Кор) или 330 Ом.
Цех Испытаний
Отточите мастерство на реальных кейсах. Каждая карта — это шаг к полному пониманию физических вычислений.
Инвертор
Основа параллельной работы. Учимся управлять состояниями двух пинов.
Два светодиода мигают строго по очереди: когда первый горит — второй выключен, и наоборот.
LED1 → GPIO 18, LED2 → GPIO 19. Катоды обоих светодиодов через резисторы к GND.
- 1 Объяви две переменные с номерами пинов: int led1 = 18; int led2 = 19;
- 2 В setup() настрой оба пина как выходы: pinMode(led1, OUTPUT); pinMode(led2, OUTPUT);
- 3 В loop() включи led1 и выключи led2: digitalWrite(led1, HIGH); digitalWrite(led2, LOW);
- 4 Подожди 500 миллисекунд: delay(500);
- 5 Поменяй состояния местами: digitalWrite(led1, LOW); digitalWrite(led2, HIGH); delay(500);
Как проверить
Светодиоды никогда не горят одновременно. Момент переключения плавный, без «темноты» между фазами.
Маяк
Работа с паттернами задержек. Создаем узнаваемый сигнал.
Двойная вспышка: две быстрые вспышки подряд, потом длинная пауза, и снова две вспышки.
LED → GPIO 18. Катод через резистор 220 Ом к GND.
- 1 Объяви пин: int led = 18; и настрой pinMode(led, OUTPUT) в setup().
- 2 В loop() включи светодиод: digitalWrite(led, HIGH); delay(100);
- 3 Выключи: digitalWrite(led, LOW); delay(200); — получилась первая вспышка.
- 4 Повтори включение-выключение ещё раз: digitalWrite(HIGH) → delay(100) → digitalWrite(LOW).
- 5 В конце loop() добавь длинную паузу: delay(2000); — чтобы двойная вспышка повторялась каждые 2 секунды.
Как проверить
Виден ритм: «вспышка-вспышка → долгая пауза → вспышка-вспышка». Как у настоящего морского маяка.
Волна
Управление цепочкой устройств. Логика последовательности.
«Бегущий огонь»: диоды зажигаются по одному слева направо (1 → 2 → 3), потом короткая пауза и повтор.
LED1 → GPIO 18, LED2 → GPIO 19, LED3 → GPIO 21. Катоды всех трёх через свои резисторы к GND.
- 1 Объяви три переменные: int led1 = 18; int led2 = 19; int led3 = 21;
- 2 В setup() сделай все три пина выходами через pinMode(..., OUTPUT).
- 3 В loop() зажги led1: digitalWrite(led1, HIGH); delay(200); digitalWrite(led1, LOW);
- 4 Сразу после этого повтори то же для led2, потом для led3.
- 5 В конце loop() добавь delay(400) — пауза перед новым кругом.
Как проверить
В каждый момент времени горит только один диод, и точка света «бежит» слева направо.
Светофор
Моделирование реальной системы. Сложные циклы.
Полный цикл светофора: зелёный → мигающий зелёный (4 раза) → жёлтый → красный → жёлто-красный → снова зелёный.
Красный → GPIO 18, Жёлтый → GPIO 19, Зелёный → GPIO 21. Все катоды через резисторы к GND.
- 1 Объяви три переменные: int red = 18; int yellow = 19; int green = 21; — и настрой pinMode для каждого.
- 2 В loop() включи зелёный на 3 секунды: digitalWrite(green, HIGH); delay(3000);
- 3 Помигай зелёным 4 раза через цикл for (int i = 0; i < 4; i++) { digitalWrite(green, HIGH); delay(500); digitalWrite(green, LOW); delay(500); }
- 4 Включи жёлтый на 1 секунду, потом выключи.
- 5 Включи красный на 3 секунды. Затем включи жёлтый ВМЕСТЕ с красным на 1 секунду (сигнал перед зелёным) и выключи оба.
Как проверить
Цикл напоминает настоящий светофор: зелёный гаснет постепенно через мигание, а перед зелёным горят красный+жёлтый.
Хаос
Работа с алгоритмами случайности (Random).
Эффект «мерцающих звёзд»: 3 светодиода независимо вспыхивают на случайное время со случайной паузой.
LED1 → GPIO 18, LED2 → GPIO 19, LED3 → GPIO 21. Катоды через резисторы к GND.
- 1 Сложи пины в массив: int leds[3] = {18, 19, 21}; — в setup() пройди циклом и вызови pinMode для каждого.
- 2 В setup() добавь randomSeed(analogRead(0)); — чтобы числа были по-настоящему случайными.
- 3 В loop() выбери случайный диод: int idx = random(0, 3); — вернёт 0, 1 или 2.
- 4 Выбери случайную длительность вспышки: int dur = random(50, 500); — от 50 до 500 мс.
- 5 Зажги выбранный диод на dur миллисекунд: digitalWrite(leds[idx], HIGH); delay(dur); digitalWrite(leds[idx], LOW);
- 6 Добавь случайную паузу между вспышками: delay(random(50, 300));
Как проверить
Светодиоды вспыхивают непредсказуемо, разной длительности, без видимого ритма — как звёзды на ночном небе.
Свой Проект
Создайте свою уникальную модель в онлайн-симуляторе. Ограничений нет!
Поздравляем! 🎉
Вы успешно завершили свой первый урок. Теперь вы знаете, как оживить железо с помощью кода. Попробуйте изменить задержку в коде, чтобы мигание стало быстрее!