Код для поиска

ESP32 Урок 6/55 - Использование RGB светодиода Проект 2.3 - Обучающий набор SunFounder ESP32 IoT

ESP32 Урок 6/55 - Использование RGB светодиода Проект 2.3 - Обучающий набор SunFounder ESP32 IoT

В этом руководстве мы научимся управлять RGB-светодиодом с помощью микроконтроллера ESP32. Этот проект поможет вам понять, как подключить RGB-светодиод и управлять его цветами с помощью сигналов ШИМ (широтно-импульсной модуляции). К концу этого руководства вы сможете создавать любые цветовые комбинации, регулируя интенсивность каждого светодиодного компонента. Это фундаментальный навык для создания визуально привлекательных проектов.

Чтобы лучше понять RGB-светодиод и его возможности смешивания цветов, мы рассмотрим схему подключения и код, необходимый для управления им с помощью ESP32. Если вам нужна визуальная помощь, обязательно посмотрите видео (на видео в 03:20) для более понятного объяснения схемы подключения и настройки кода.

Объяснение аппаратной части

Основными компонентами этого проекта являются модуль ESP32, RGB-светодиод и резисторы. ESP32 — это мощный микроконтроллер со встроенными Wi-Fi и Bluetooth, что делает его идеальным для приложений Интернета вещей. RGB-светодиод состоит из трех отдельных светодиодов (красного, зеленого и синего), размещенных в одном корпусе, что позволяет получать широкий диапазон цветов на основе комбинации этих трех цветов.

В нашей схеме RGB-светодиод будет подключен по схеме с общим анодом, где вывод анода подключается к положительному напряжению, а вывод катода каждого цвета управляется независимо. Таким образом, мы можем регулировать яркость каждого цвета, отправляя ШИМ-сигналы через ESP32.

Данные из технического описания

ПроизводительSunFounder
Номер деталиRGB-LED-4PIN
Тип общего выводаОбщий анод
Прямое напряжение (на светодиод)2,0 В (красный), 3,2 В (зеленый), 3,2 В (синий)
Максимальный ток (на светодиод)20 мА
Рабочая температураот -25 до 85 °C
Корпус4-выводной, выводной монтаж

  • Используйте резистор 220 Ом для каждого цвета, чтобы ограничить ток и предотвратить повреждение.
  • Убедитесь, что общий вывод подключен к соответствующему напряжению (3,3 В для ESP32).
  • Перепроверьте полярность при подключении RGB-светодиода, чтобы избежать повреждения из-за обратного напряжения.
  • Используйте ШИМ для управления уровнями яркости, рекомендуется частота около 5000 Гц.
  • Проверяйте каждый цвет отдельно перед подключением всей схемы.

Инструкции по подключению

Чтобы подключить RGB-светодиод к ESP32, начните с определения выводов на RGB-светодиоде. Самый длинный вывод — это общий анод, который будет подключен к источнику питания 3,3 В на ESP32. Остальные три вывода предназначены для красного, зеленого и синего цветов. В нашей схеме подключите красный вывод к GPIO 27, зеленый вывод к GPIO 26, а синий вывод к GPIO 25. К каждому из этих выводов также будет подключен резистор 220 Ом.

Начните с размещения RGB-светодиода на макетной плате, убедившись, что вывод общего анода находится слева. Вставьте красный вывод в макетную плату и подключите его к одному концу резистора, а другой конец резистора подключите к GPIO 27. Повторите это для зеленого и синего выводов, подключив зеленый вывод к GPIO 26, а синий вывод к GPIO 25. Наконец, подключите общий вывод к контакту 3,3 В на ESP32, чтобы завершить цепь. Убедитесь, что земля ESP32 также подключена к макетной плате.

ESP32_RGB_LED_wiring_lesson_06

Примеры кода и пояснения

В коде мы начинаем с определения выводов RGB-светодиода с помощью констант. Например, const int redPin = 27; определяет вывод GPIO для красного светодиода. Мы также устанавливаем частоту и разрешение ШИМ с помощью const int freq = 5000; и const int resolution = 8;. Это задает необходимые параметры для управления яркостью каждого цвета светодиода.

const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;

Далее мы настраиваем каналы ШИМ для каждого цвета в функции setup(). Функция ledcAttach() связывает каждый вывод с соответствующим каналом ШИМ. Эта настройка гарантирует, что мы можем управлять яркостью каждого цвета независимо.

void setup() {
  ledcAttach(redPin, freq, resolution);
  ledcAttach(greenPin, freq, resolution);
  ledcAttach(bluePin, freq, resolution);
}

В функции loop() мы используем функцию setColor() для изменения цветов светодиода. Значения, передаваемые в эту функцию, представляют интенсивность красного, зеленого и синего цветов. Например, вызов setColor(255, 0, 0); устанавливает красный цвет светодиода. После каждого изменения цвета мы используем delay(1000); для ожидания в течение одной секунды перед переключением на следующий цвет.

void loop() {
  setColor(255, 0, 0); // Красный
  delay(1000);
  setColor(0, 255, 0); // Зеленый
  delay(1000);
}

Демонстрация / Что ожидать

После завершения подключения и загрузки кода в ESP32 вы должны увидеть, как RGB-светодиод циклически меняет различные цвета: красный, зеленый, синий, желтый, фиолетовый и голубой. Если светодиод не загорается правильно, перепроверьте схему подключения и убедитесь, что общий анод подключен к 3,3 В. Кроме того, если вы заметите неожиданные цвета, проверьте подключение резисторов к выводам светодиода.

Как показано в видео (на видео в 10:45), изменение значений в функции setColor() позволяет создавать различные цвета. Экспериментируйте с различными комбинациями, чтобы увидеть, как реагирует RGB-светодиод.

Временные метки видео

  • 00:00 - Введение в RGB-светодиод
  • 03:20 - Объяснение подключения
  • 10:45 - Разбор кода
  • 12:30 - Демонстрация смешивания цветов

Изображения

ESP32_rgb_pin
ESP32_rgb_pin
ESP32_RGB_led_wires
ESP32_RGB_led_wires
ESP32_RGB_LED_wiring_lesson_06
ESP32_RGB_LED_wiring_lesson_06
806-ESP32 Tutorial 6/55 - Arduino code to control RGB LED with ESP32
Язык: C++
/*
 * // Определите пины RGB светодиода
 */
const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;

 // Определите частоту ШИМ и разрешение
const int freq = 5000;
const int resolution = 8;

void setup() {
 // Настройте PWM-выходы
  ledcAttach(redPin, freq, resolution);
  ledcAttach(greenPin, freq, resolution);
  ledcAttach(bluePin, freq, resolution);
}

void loop() {
  setColor(255, 0, 0); // Красный
  delay(1000);
  setColor(0, 255, 0); // Зелёный
  delay(1000);
  setColor(0, 0, 255); // Синий
  delay(1000);
  setColor(255, 255, 0); // Желтый
  delay(1000);
  setColor(80, 0, 80); // Фиолетовый
  delay(1000);
  setColor(0, 255, 255); // Циан
  delay(1000);
}

void setColor(int red, int green, int blue) {
  ledcWrite(redPin, red);
  ledcWrite(greenPin, green);
  ledcWrite(bluePin, blue);
}

Ресурсы и ссылки

Файлы📁

Нет доступных файлов.