Руководства · 9 мин чтения

Рождественские проекты на Arduino: 12 идей со светодиодами, звуком и светом

Рождественские проекты на Arduino: светодиодная ёлка, песни на зуммере, детектор Санты, огни с включением на закате и светодиодная свеча. Таблицы деталей, времени и затрат.

Рождественские проекты на Arduino — отличный повод с удовольствием изучать электронику: несколько светодиодов, зуммер или датчик позволят украсить ёлку, окно и входную дверь с помощью собственного кода. В этом списке 12 проектов к Рождеству и Новому году на Arduino, ESP32 и Raspberry Pi Pico: от мерцающей светодиодной свечи до музыкальной шкатулки с рождественскими песнями, от детектора Санты у камина до уличных огней, которые включаются на закате автоматически. Все проекты основаны на реальных, проверенных решениях, а большинство можно закончить за один вечер.

Сначала сравним все двенадцать проектов в одной таблице: какая плата и детали нужны, сколько времени займёт сборка и каковы затраты. Затем кратко опишем каждый проект и для трёх дадим код, который можно сразу загрузить. Для проектов, требующих подробных инструкций, есть ссылки на пошаговые руководства, опубликованные в этом месяце. В конце разберём безопасное питание украшений и самые частые ошибки.

Светодиод WS2812B NeoPixel для рождественских проектов на Arduino
Светодиод WS2812B NeoPixel: каждый светодиод получает свой цвет по одному проводу данных, поэтому он становится звездой рождественских украшений.

Обзор 12 проектов

#ПроектПлатаОсновные деталиВремяЗатраты
1Рождественская ёлка с WS2812BUno / ESP32Лента WS2812B, адаптер на 5 V, конденсатор на 1 000 µF2–3 чВысокий
2Рождественские песни на зуммереUnoПассивный зуммер, 2 светодиода, кнопка30 минНизкий
3Мерцающая светодиодная свечаUno / Nano3 жёлтых светодиода, 3 × 220 Ω20 минНизкий
4Детектор СантыUnoHC-SR501 PIR, пассивный зуммер, светодиод1 чНизкий
5Уличные огни с включением на закатеESP32Модуль реле, адаптер на 5 V, герметичный корпус2 чСредний
6Рождественская звезда NeoPixelPico / UnoКольцо WS2812B из 24 светодиодов, 330 Ω, 1 000 µF1 чСредний
7Ёлочный шар с меняющимся цветомUno / ESP32RGB-светодиод, 3 × 220 Ω, матовый ёлочный шар30 минНизкий
8Гирлянда с бегущим огнёмUno8 светодиодов, 8 × 220 Ω, потенциометр45 минНизкий
9Таймер обратного отсчёта до Нового годаESP32Матрица MAX7219 4 в 1, зуммер2 чСредний
10Украшение на окно с включением в темнотеUno / ESP32LDR, 10 kΩ, светодиоды или короткая лента30 минНизкий
11Переключение режимов света с пультаUnoИК-приёмник, пульт, RGB-светодиод1 чНизкий
12Сигнализация для подарочной коробкиUno / NanoГеркон, магнит, зуммер30 минНизкий

В столбце затрат указан уровень, а не цена, потому что цены сильно зависят от страны и месяца. Низкий означает, что проект можно собрать из деталей, которые уже есть в стартовом наборе. Средний означает, что понадобится один дополнительный модуль: реле, светодиодное кольцо или матричный дисплей. Высокий относится к проекту ёлки, для которого нужны метры светодиодной ленты и мощный адаптер на 5 V. Если набора пока нет, начни с руководства по стартовому набору Arduino.

1. Рождественская ёлка со светодиодами WS2812B

Самый эффектный проект в списке: адресная лента WS2812B, обёрнутая вокруг ёлки, показывает радугу, снегопад и мерцание, получая данные по одному проводу. Для ёлки высотой 1,5–1,8 м хорошая отправная точка — 150 светодиодов, то есть 5 м ленты с плотностью 30 светодиодов/м. Каждый светодиод при белом свете на полной яркости потребляет около 60 mA, поэтому расчётный ток для 150 светодиодов составляет 9 A; с реальными эффектами ток держится около 3 A, и адаптера на 5 V 6 A достаточно. Конденсатор на 1 000 µF на входе ленты и резистор на 330 Ω в линии данных защищают первый светодиод. Полная сборка, код FastLED и режимы с управлением кнопкой описаны в статье Светодиодная подсветка рождественской ёлки. Проекты по использованию WS2812B и анимации WS2812B в BlueGrays тоже пошагово знакомят с основами.

2. Рождественские песни на зуммере

С пассивным зуммером и функцией tone() можно сыграть Jingle Bells, We Wish You a Merry Christmas, Silent Night и Deck the Halls. Секрет в правильных частотах и длительностях: До (C5) — 523 Hz, Ми (E5) — 659 Hz, Соль (G5) — 784 Hz, а при темпе 120 BPM восьмая нота длится 250 мс. Активный зуммер издаёт звук только одной высоты, поэтому здесь не подходит; обязательно выбирай пассивный. Полные массивы нот для всех четырёх песен, два светодиода, мигающих в такт нотам, и проигрыватель на основе millis с кнопкой выбора песни готовы в статье Код Jingle Bells для Arduino. Если только начинаешь, потренируйся на бесплатном проекте с зуммером.

3. Мерцающая светодиодная свеча

Безопасная светодиодная свеча вместо настоящей: три жёлтых или оранжевых светодиода на пинах с ШИМ мерцают, словно пламя, благодаря случайной яркости. Хитрость в двух видах случайности: яркость выбирается от 120 до 255, чтобы пламя никогда не гасло полностью, а задержка меняется от 30 до 120 мс, чтобы мерцание не выглядело механически равномерным. Помести светодиоды в бумажный фонарик, банку или сосуд из матового стекла: рассеянный свет сделает эффект гораздо реалистичнее. Вариант с питанием от батареек и алгоритмы более естественного пламени смотри в статье Эффект светодиодной свечи.

C++ (Arduino IDE)
1// Titreyen LED mum: 3 sarı/turuncu LED, PWM pinleri 9, 10, 11
2// Flickering LED candle: 3 yellow/orange LEDs on PWM pins 9, 10, 11
3const int CANDLE_PINS[3] = {9, 10, 11};   // her LED'e 220 ohm direnç / 220 ohm resistor per LED
4
5void setup() {
6  for (int i = 0; i < 3; i++) {
7    pinMode(CANDLE_PINS[i], OUTPUT);
8  }
9  randomSeed(analogRead(A0));             // boş pinden rastgele tohum / random seed from a floating pin
10}
11
12void loop() {
13  for (int i = 0; i < 3; i++) {
14    int brightness = random(120, 256);    // 120-255: hiç sönmeyen alev / a flame that never goes dark
15    analogWrite(CANDLE_PINS[i], brightness);
16  }
17  delay(random(30, 120));                 // düzensiz aralık = doğal titreme / irregular timing = natural flicker
18}

4. Детектор Санты

Поставь датчик HC-SR501 PIR перед камином или ёлкой: когда кто-то подойдёт ночью, загорится светодиод, зуммер издаст «хо-хо-хо», а монитор порта (Serial Monitor) покажет число посещений. Первые 30–60 секунд после включения PIR-датчик изучает помещение и может ложно срабатывать, поэтому в начале код ждёт минуту. Два подстроечных резистора на датчике задают чувствительность (около 3–7 м) и время, в течение которого на выходе сохраняется HIGH. Ниже приведён самый простой вариант кода; полная версия, которая воспроизводит MP3-звуки, встаёт на охрану только в темноте и отправляет уведомление на телефон с ESP32, есть в статье Детектор Санты.

C++ (Arduino IDE)
1// Noel Baba dedektörü: PIR hareket görünce LED yanar, buzzer "ho ho ho" çalar
2// Santa detector: when the PIR sees motion, the LED lights and the buzzer plays "ho ho ho"
3const int PIR_PIN = 2;          // HC-SR501 OUT
4const int BUZZER_PIN = 8;       // pasif buzzer / passive buzzer
5const int LED_PIN = 13;         // kırmızı LED (220 ohm) / red LED (220 ohm)
6const unsigned long COOLDOWN_MS = 10000;   // 10 sn içinde tekrar ötme / don't retrigger within 10 s
7
8unsigned long lastAlarm = 0;
9int visits = 0;
10
11void hoHoHo() {
12  for (int i = 0; i < 3; i++) {
13    digitalWrite(LED_PIN, HIGH);
14    tone(BUZZER_PIN, 392, 250);   // G4
15    delay(300);
16    digitalWrite(LED_PIN, LOW);
17    tone(BUZZER_PIN, 330, 250);   // E4
18    delay(400);
19  }
20}
21
22void setup() {
23  Serial.begin(9600);
24  pinMode(PIR_PIN, INPUT);
25  pinMode(LED_PIN, OUTPUT);
26  Serial.println(F("PIR isiniyor (60 sn) / PIR warming up (60 s)"));
27  delay(60000);                   // PIR ilk dakikada yanlış tetikler / PIR false-triggers in the first minute
28}
29
30void loop() {
31  if (digitalRead(PIR_PIN) == HIGH && millis() - lastAlarm > COOLDOWN_MS) {
32    lastAlarm = millis();
33    visits++;
34    Serial.print(F("Noel Baba gorundu! Ziyaret / Santa spotted! Visit: "));
35    Serial.println(visits);
36    hoHoHo();
37  }
38}

5. Уличные огни с включением на закате (ESP32)

Обычный таймер, включающий освещение балкона или сада каждый вечер в одно время, не учитывает сезонное смещение заката: в Берлине солнце садится в 16:38 1 ноября, в 15:57 1 декабря и в 16:47 31 января. ESP32, напротив, получает время по Wi-Fi через NTP, вычисляет закат на текущий день по твоим широте и долготе, включает огни через реле с наступлением темноты и автоматически выключает их в полночь. 21 декабря солнце садится в Стамбуле в 17:38, а в Берлине в 15:53; код рассчитывает эту разницу автоматически. Небольшая веб-страница, которую можно открыть на телефоне, позволяет переключать огни и вручную. Код, таблица закатов по городам и советы по безопасности на улице есть в статье Таймер рождественских огней на ESP32.

6. Рождественская звезда NeoPixel

Кольцо WS2812B из 24 светодиодов — практически готовая звезда на верхушку ёлки. На Raspberry Pi Pico для его работы достаточно нескольких строк со встроенным модулем MicroPython neopixel, а питание от пауэрбанка превращает его в украшение без проводов к розетке. Вариант для Pico, пять эффектов и переключение режимов сенсорной кнопкой разобраны в статье Рождественское украшение на Pico. Если у тебя Uno, код ниже создаёт случайные вспышки на тёплом белом фоне. Яркость ограничена значением 60, поэтому 24 светодиода потребляют не более примерно 350 mA; для коротких проверок питания от USB достаточно, но для постоянного использования подключи кольцо к отдельному источнику на 5 V.

C++ (Arduino IDE)
1// Ağaç tepesi yıldızı: 24'lü WS2812B halka, sıcak beyaz zemin üstünde rastgele parıltı
2// Tree-top star: 24-LED WS2812B ring, random twinkles over a warm white base
3#include <Adafruit_NeoPixel.h>
4
5const int RING_PIN = 6;          // DIN, araya 330 ohm direnç / DIN through a 330 ohm resistor
6const int LED_COUNT = 24;
7Adafruit_NeoPixel ring(LED_COUNT, RING_PIN, NEO_GRB + NEO_KHZ800);
8
9uint8_t level[LED_COUNT];        // her LED'in parıltı seviyesi / twinkle level per LED
10
11void setup() {
12  ring.begin();
13  ring.setBrightness(60);        // 0-255; 60 ile 24 LED en fazla ~350 mA / at 60, 24 LEDs draw at most ~350 mA
14  randomSeed(analogRead(A0));
15}
16
17void loop() {
18  if (random(10) < 3) {
19    level[random(LED_COUNT)] = 255;            // yeni parıltı / new twinkle
20  }
21  for (int i = 0; i < LED_COUNT; i++) {
22    uint16_t w = level[i];
23    // sıcak beyaz zemin + beyaza çeken parıltı / warm white base + twinkle toward white
24    uint8_t r = 90 + w * 165 / 255;    // 90-255
25    uint8_t g = 40 + w * 215 / 255;    // 40-255
26    uint8_t b = 10 + w * 245 / 255;    // 10-255
27    ring.setPixelColor(i, ring.Color(r, g, b));
28    if (level[i] > 8) level[i] -= 8; else level[i] = 0;    // yavaşça sön / fade out slowly
29  }
30  ring.show();
31  delay(30);
32}

7. Ёлочный шар с меняющимся цветом

Один RGB-светодиод внутри матового пластикового шара оживляет ёлку, плавно переходя от красного к зелёному, а затем к золотистому цвету. Три цветовых канала подключаются к трём пинам с ШИМ, каждый через резистор на 220 Ω, а значения analogWrite() меняются постепенно. У светодиода с общим катодом общая ножка идёт на GND, с общим анодом — на 5 V, и логика управления яркостью инвертируется; разница объясняется в статье Как использовать RGB-светодиод. Проект плавной смены цветов RGB в BlueGrays даёт готовую схему и код для этого эффекта; вариант для ESP32 смотри в проекте управления RGB-светодиодом на ESP32.

8. Гирлянда с бегущим огнём

Выстрой восемь цветных светодиодов в ряд и сделай классический бегущий огонь, где свет движется от одного края к другому, или эффект Knight Rider с движением туда и обратно. Добавь потенциометр и преобразуй его значение analogRead() в задержку 30–300 мс, чтобы регулировать скорость вручную. Чередование красных, зелёных и жёлтых светодиодов создаст рождественскую палитру. Не забудь резистор на 220 Ω для каждого светодиода; подходящий номинал можно найти с помощью калькулятора резистора для светодиода. Работа эффектов объясняется в статье Огни Knight Rider и бегущий огонь, а готовые схемы есть в бесплатных проектах «Бегущий огонь» и «Огни Knight Rider».

9. Таймер обратного отсчёта до Нового года

Светодиодная матрица 32×8 из четырёх модулей MAX7219 показывает бегущей строкой дни, часы и минуты до Нового года. Поскольку ESP32 получает время из интернета через NTP, настраивать ничего не нужно; в полночь по экрану проходит сообщение Happy New Year, а зуммер играет мелодию. Без интернета ту же задачу решает Arduino Uno с модулем часов RTC. Схема подключения, библиотеки и код для обоих вариантов есть в статье Таймер обратного отсчёта до Нового года. Для знакомства с матричным дисплеем подойдёт проект анимации и текста на матрице 4x 32x8 в BlueGrays.

10. Украшение на окно, которое автоматически загорается в темноте

Делитель напряжения из фоторезистора (LDR) и резистора на 10 kΩ преобразует освещённость в число от 0 до 1023 с помощью analogRead(). Когда значение опускается ниже заданного порога, светодиоды оконного украшения включаются, а когда утром светлеет — выключаются. Чтобы проплывающие в сумерках облака не заставляли украшение мигать, используй два порога: например, включение ниже 300 и выключение выше 400. Этот небольшой промежуток называется гистерезисом и полностью устраняет мигание. Подробности о датчике есть в статье Датчик освещённости LDR; схема и код готовы в бесплатном проекте ночника на LDR.

11. Переключение режимов света с пульта

С запасным пультом от телевизора и модулем ИК-приёмника с 3 пинами можно управлять украшениями с дивана: кнопка 1 включает красный цвет, кнопка 2 — зелёный, кнопка 3 — мигание, а кнопка питания всё выключает. Сначала считай коды кнопок пульта в мониторе порта и запиши их, затем сопоставь каждый код с режимом. Учти, что команды библиотеки IRremote изменились в версии 3.0; старые примеры для 2.x могут не компилироваться с новой версией. Подробности есть в статье ИК-приёмник и пульт, а готовая схема — в проекте включения и выключения светодиода ИК-пультом в BlueGrays.

12. Сигнализация для подарочной коробки

Забавный способ защитить подарки под ёлкой от любопытных рук: приклей маленький магнит к крышке коробки, а геркон — к её краю. При закрытой крышке магнит замыкает контакты геркона; когда крышку приподнимают, контакт размыкается, Arduino видит HIGH на пине, считываемом с INPUT_PULLUP, и зуммер подаёт сигнал. Геркон чувствует магнит на расстоянии около 1–2 см, поэтому даже небольшое приподнимание крышки вызывает тревогу. Герконы в стеклянном корпусе легко ломаются, поэтому не сгибай выводы слишком близко к корпусу. Принцип работы описан в статье Геркон, а вариант датчика двери есть в проекте датчика двери на герконе в BlueGrays.

Питание и безопасность: как запитать украшения

НагрузкаПримерный токРекомендуемое питание
Свеча из 3 светодиодов или гирлянда из 8 светодиодов20–60 mAUSB или 4 батарейки AA
Зуммер + 2 светодиода30–50 mAUSB или батарейка на 9 V
Кольцо из 24 светодиодов, яркость 60До ~350 mAUSB 5 V 1 A или пауэрбанк
Лента из 60 светодиодовОбычно 1,2 A, в худшем случае 3,6 AАдаптер на 5 V 3 A
Лента из 150 светодиодовОбычно 3 A, в худшем случае 9 AАдаптер на 5 V 6 A + подпитка ленты
Сетевая гирляндаЗависит от гирляндыМодуль реле + герметичный корпус, сетевая часть изолирована
Сетевое напряжение смертельно опасно. Если переключаешь сетевую гирлянду через реле, помести все соединения в закрытый изолирующий корпус, не оставляй открытых клемм и подключай схему к линии, защищённой устройством защитного отключения (УЗО). Если есть сомнения, выбирай низковольтные светодиодные гирлянды на 5 V или 12 V. Для проектов с детьми используй только украшения с питанием от USB или батареек.

Частые ошибки и их решения

  • Светодиодная лента мерцает случайными цветами: GND платы не соединена с GND адаптера. Всегда соединяй обе земли.
  • Arduino перезагружается, когда лента загорается белым: лента питается от пина 5V платы. Подключи питание ленты напрямую к адаптеру, а плату используй только для сигнала данных.
  • Зуммер издаёт один тон вместо мелодии: это активный зуммер. Для мелодий нужен пассивный.
  • PIR постоянно срабатывает: не выдержано время прогрева после включения либо датчик направлен на радиатор или поток тёплого воздуха. Подожди минуту и отодвинь датчик от источников тепла.
  • Светодиодная свеча мигает равномерно: задержка постоянна. Сделай значение внутри delay() тоже случайным.
  • Украшение с LDR мигает в сумерках: используется один порог. Добавь гистерезис с отдельными порогами включения и выключения.
Прежде чем крепить украшения на ёлку, дай им поработать на столе хотя бы полчаса и убедись, что адаптер, провода и светодиодная лента не нагреваются. Если какая-то деталь на ощупь горячее, чем слегка тёплая, уменьши яркость или используй более толстый провод. При питании от батареек заранее рассчитай время работы с помощью калькулятора времени работы от батареи.

Базовые схемы для большинства проектов из этого списка уже готовы в приложении BlueGrays: проекты ночника на LDR и зуммера бесплатны, а проекты с WS2812B, датчиком движения, NTP и RGB на Pico тоже содержат электрическую схему, список подключений и код для каждого шага. Собери там проект, добавь рождественские детали из этой статьи и ещё до праздников сможешь наполнить дом украшениями собственного изготовления.

Частые вопросы

Что можно сделать на Arduino к Рождеству?

Самые популярные рождественские проекты на Arduino — ёлка со светодиодами WS2812B, рождественские песни на зуммере, мерцающая светодиодная свеча, детектор Санты на PIR-датчике и таймер обратного отсчёта до Нового года. Большинство можно собрать за вечер из деталей стартового набора. Для уличных огней и обратного отсчёта лучше выбрать ESP32 с Wi-Fi.

Какой рождественский проект проще всего для начала?

Проще всего мерцающая светодиодная свеча: три светодиода, три резистора и пятнадцать строк кода — всё готово за двадцать минут. Сразу после неё можно попробовать сыграть Jingle Bells на зуммере. Для обоих проектов нужны только детали из стартового набора.

Сколькими светодиодами может управлять Arduino?

При использовании обычных светодиодов каждый пин Uno управляет одним светодиодом с рекомендуемым максимальным током 20 mA, а суммарный ток всех пинов должен оставаться ниже 200 mA. С адресными светодиодами вроде WS2812B один пин управляет сотнями светодиодов; предел определяется ОЗУ платы (3 байта на светодиод) и током адаптера. Для 150 светодиодов рекомендуется адаптер на 5 V 6 A.

Можно ли питать светодиодную ленту от пина 5V Arduino?

Только для проверки нескольких светодиодов на низкой яркости. Пин 5V платы Uno с питанием от USB может отдавать около 400–500 mA; каждый WS2812B при белом свете на полной яркости потребляет 60 mA, поэтому уже 8–10 светодиодов достигают этого предела. Более длинные ленты питай напрямую от адаптера на 5 V и соединяй земли.

Как автоматически включать рождественские огни с Arduino?

Самый простой способ — определять темноту с помощью LDR и включать огни через реле или транзистор. Для большей точности ESP32 получает время из интернета через NTP, рассчитывает закат для твоего местоположения, включает огни точно в этот момент и выключает в выбранное тобой время.

Что выбрать для рождественского проекта: ESP32 или Arduino Uno?

Если не нужны Wi-Fi, часы или управление с телефона, Uno или Nano достаточно, и работать с ними проще. Выбирай ESP32 для проектов, которым нужен интернет: таймера по закату, часов обратного отсчёта или выбора цветов через веб-страницу. Для маленьких украшений на батарейках хорошо подходит и Raspberry Pi Pico.

Все проекты
Ночник на LDR
#12Новичок

Ночник на LDR

Маленький ночник, который сам включается, когда темнеет, и гаснет, когда наступает утро. Датчик освещённости измеряет, насколько светло в комнате, и Arduino включает светодиод, когда достаточно темно,

4.8(103)
210
Работа с зуммером
#13Новичок

Работа с зуммером

Интересно, как дверной звонок или сигнализация издают звук? Arduino заставляет маленький зуммер пищать через короткие промежутки: пик, пауза, пик, пауза. Ты видишь, как электричество превращается в зв

4.7(89)
162
Работа со светодиодной лентой WS2812B
#69Средний
Premium

Работа со светодиодной лентой WS2812B

Познакомься с умной светодиодной лентой, где каждому огоньку можно задать свой цвет. Arduino сначала зажигает первые пять светодиодов красным, через секунду остальные пять — синим, затем выключает все

4.8(54)
70
Анимация WS2812B 1
#75Средний
Premium

Анимация WS2812B 1

На ленте из 56 светодиодов все цвета радуги выстраиваются рядом и текут без остановки, будто по ленте скользит река света. Каждый светодиод светится чуть другим цветом, чем предыдущий, и пока цвета пл

4.9(69)
89
Детектор движения на датчике движения
#24Новичок
Premium

Детектор движения на датчике движения

Простой охранник, который сообщает, что кто-то вошёл в комнату. Датчик движения улавливает тепло человеческого тела, а Arduino держит светодиод включённым, пока есть движение, и гасит его, когда движе

4.6(47)
67
Управление лентой WS2812B NeoPixel на ESP32
#126Средний
Premium

Управление лентой WS2812B NeoPixel на ESP32

Адресуемые светодиоды WS2812B (NeoPixel) — умные RGB-светодиоды, которыми управляют цепочкой через один пин данных. В этом проекте лента WS2812B из 8 светодиодов управляется библиотекой Adafruit_NeoPixel и показывает плавную радужную анимацию. Логика 3,3V у ESP32 работает с большинством WS2812B, но на случай нестабильности показано решение с последовательным резистором 470Ω и конденсатором 1000µF. Анимация получается сдвигом значения оттенка.

4.9(19)
30
Точное время из интернета через NTP на ESP32
#128Продвинутый
Premium

Точное время из интернета через NTP на ESP32

ESP32 подключается к Wi-Fi и получает точное время с точностью до миллисекунд от серверов NTP (Network Time Protocol). Благодаря функции configTzTime() автоматически применяется часовой пояс Турции (TRT, UTC+3), а в странах с летним временем переходы обрабатываются автоматически по строке POSIX TZ. Время выводится в монитор порта и на необязательный I2C LCD. configTzTime() запускает службу SNTP, которая периодически пересинхронизирует часы.

4.5(13)
21
Смена цветов RGB-светодиода на Pico (3 канала PWM)
#161Новичок

Смена цветов RGB-светодиода на Pico (3 канала PWM)

Один светодиод — миллионы цветов! RGB-светодиод содержит 3 светодиода: красный, зелёный и синий. Если управлять каждым своим каналом PWM Pico, цвета смешиваются: красный + зелёный = жёлтый, зелёный + синий = голубой, все три = белый. Светодиод перебирает 8 цветов. Изучи несколько каналов PWM, объявление функций (def set_color(...)), смешивание RGB, перевод 8 бит → 16 бит (x257) и общий катод и общий анод.

0.0(0)
6