Как сделать декоративное панно с подсветкой на Arduino
Предлагается вариант изготовления декоративного панно со светодиодной подсветкой, которая будет управляться с помощью Arduino. На данном панно будет изображено созвездие Большой Медведицы и окружающие его созвездия. Роль звёзд будут исполнять светодиоды. Чтобы придать картине больше таинственности и шарма, звёзды в произвольном порядке будут мерцать.
Инструкция по изготовлению декоративного панно со светодиодной подсветкой, управляемой Ардуино
Нам понадобится:
- Arduino Nano или иная совместимая плата;
- персональный компьютер со средой разработки Arduino IDE.
- USB-кабель и зарядка для телефона;
- светодиоды, количество зависит от того, сколько хотите разместить на панно (вот из такого набора, например);
- резисторы номиналом 190…240 Ом, по количеству светодиодов (вот отличный набор резисторов самых распространённых номиналов);
- соединительные провода, термоусадочная трубка или кембрик;
- толстая фанера (5…10 мм);
- лак для дерева и морилка (по желанию);
- выжигатель;
- паяльник.
1Выжигаем картину на фанере
Первым делом нужно подготовить фанеру нужного формата и тщательно обработать её наждачной бумагой. Сначала крупной, поперёк волокон фанеры, затем более мелкой, пока фанера не станет приятно гладкой на ощупь. Обработать нужно обе поверхности, и лицевую, и заднюю. Желательно также пройтись по боковым поверхностям и кромкам.
После этого наносим простым карандашом на фанеру изображение, которое вы хотите видеть на своём панно. Можно воспользоваться копировальной бумагой, можно разделить поверхность на клетки и нарисовать изображение от руки по клеткам. Или, если вы хорошо умеете рисовать, нарисуйте его от руки.

Далее выжигаем нашу картину выжигателем. Думаю, это не требует пояснения.
2Углубления для проводов и платы Ардуино
Теперь нужно определить, в каких местах у вас будут находиться светодиоды, и просверлить в этих местах отверстия под диаметр светодиодов. Например, в данном панно светодиоды будут в местах самых ярких звёзд на картине.
Сверлить отверстия нужно с диаметром светодиода. Со стороны выводов у светодиода есть утолщение. Можно взять сверло побольше, диаметром этого утолщения, и изнутри панно на 1-2 мм углубиться этим сверлом, для того чтобы светодиод был плотно утоплен в глубь фанеры, когда мы его поставим на своё место.
На обратной стороне панно определите место, где будет находиться плата Arduino Nano или Arduino Mini, и вырезать под неё углубление. Удобно располагать плату с краю, чтобы можно было легко подключить питание стандартным кабелем USB. Но это вовсе не обязательно.
К плате Ардуино нужно будет подвести провода от светодиодов. Их также желательно упрятать в углубления. Соответственно, нужно расчертить и вырезать дорожки-углубления для проводов.

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

3Подключение светодиодов и Arduino
Подключим светодиоды. Не забудем, что каждый светодиод должен иметь токоограничивающий резистор номиналом от 180 до 240 Ом. Поэтому сначала припаяем к одной из ножек каждого светодиода резистор.
Затем вставим светодиоды в просверленные отверстия. Расположим обе ножки и резистор вдоль вырезанных углублений.
Выводы светодиодов будут закреплены в желобках и будут тесно соприкасаться друг с другом. Поэтому их обязательно нужно изолировать друг от друга диэлектриком. Желательно иметь кусочки термоусадочной трубки и надеть их на концы проводов, прежде чем припаивать к выводам светодиодов. Если трубки нет, то подойдут кусочки кембрика или другого изолятора.

После этого припаяем ножки светодиодов к проводам и также зафиксируем их металлическими скобками.
Установим плату Arduino на своё место в подготовленное углубление. Если есть гвоздики маленького диаметра, желательно закрепить плату (Arduino имеет 4 крепёжных отверстия по углам).

Припаяем провода от светодиодов к цифровым выводам Arduino.
Удобно припаивать положительные выводы (аноды) светодиодов к цифровым или аналоговым выводам Ардуино, а землю вывести на отдельную шину и припаивать все провода, идущие от катодов светодиодов, к этой шине.
6Украшение панно рамкой
Теперь, когда вся электронная часть собрана, украсим панно красивой рамкой от картины или фотографии. Рамку можно закрепить жестяными уголками.

Конечно, это придаст панно более благородный и законченный вид. Но если рамки нет, то можно обойтись и без неё.
7Скетч декоративного панно для Arduino
Осталось написать скетч и загрузить его в Arduino. Мой вариант скетча приведён ниже:
Скетч для декоративного панно с подсветкой (разворачивается)
// объявляем номера выводов:
const int led2 = 2;
const int led3pwm = 3;
const int led4 = 4;
const int led5pwm = 5;
const int led6pwm = 6;
const int led7 = 7;
const int led8 = 8;
const int led9pwm = 9;
const int led10pwm = 10;
const int led11pwm = 11;
const int led12 = 12;
const int ledA1 = A1;
const int ledA5 = A5;
// переменные управления мерцанием "звёзд":
int minBrightness = 15;
int maxBrightness = 255;
int brightnessStep = 5;
int brightnessDelay = 50;
int brightnessPause = 700;
void setup() {
// задаём режимы работы выводов:
pinMode(led2, OUTPUT);
pinMode(led3pwm, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5pwm, OUTPUT);
pinMode(led6pwm, OUTPUT);
pinMode(led7, OUTPUT);
pinMode(led8, OUTPUT);
pinMode(led9pwm, OUTPUT);
pinMode(led10pwm, OUTPUT);
pinMode(led11pwm, OUTPUT);
pinMode(led12, OUTPUT);
pinMode(ledA1, OUTPUT);
pinMode(ledA5, OUTPUT);
// зажигаем светодиоды с постоянной яркостью:
digitalWrite(led2, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led7, HIGH);
digitalWrite(led8, HIGH);
digitalWrite(led12, HIGH);
digitalWrite(ledA1, HIGH);
digitalWrite(ledA5, HIGH);
// зажигаем светодиоды с ШИМ минимальной яркостью:
analogWrite(led3pwm, minBrightness);
analogWrite(led5pwm, minBrightness);
analogWrite(led6pwm, minBrightness);
analogWrite(led9pwm, minBrightness);
analogWrite(led10pwm, minBrightness);
analogWrite(led11pwm, minBrightness);
}
void loop() {
// управляем случайным светодиодом, одним из 6-ти:
int randNumber = random(1, 7);
switch (randNumber) {
case 1:
fade(led3pwm);
break;
case 2:
fade(led5pwm);
break;
case 3:
fade(led6pwm);
break;
case 4:
fade(led9pwm);
break;
case 5:
fade(led10pwm);
break;
case 6:
fade(led11pwm);
break;
}
}
// Меняем яркость:
void fade(int pinNum) {
// наращиваем яркость:
for (int fadeValue = minBrightness; fadeValue <= maxBrightness; fadeValue += brightnessStep) {
analogWrite(pinNum, fadeValue);
delay(brightnessDelay);
}
// произвольная задержка:
delay(brightnessPause * random(1, 5));
// убавляем яркость:
for (int fadeValue = maxBrightness; fadeValue >= minBrightness; fadeValue -= brightnessStep) {
analogWrite(pinNum, fadeValue);
delay(brightnessDelay);
}
// произвольная задержка:
delay(brightnessPause * random(1, 5));
}
Светодиоды, подключённые к цифровым выводам без функции ШИМ, будут гореть с постоянной яркостью. А другие, подключённые к выводам с ШИМ, будут периодически менять свою яркость. Причём время задержки и номер вывода будет задаваться случайно в заданном ограниченном диапазоне. Это будет имитировать мерцание звёзд.
8Загрузка скетча и включение панно
Загружаем скетч в память Ардуино.
С зарядного устройства для телефона по кабелю mini-USB подаём питание на Arduino… и любуемся результатом своих трудов!






