Как сделать декоративное панно с подсветкой на 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… и любуемся результатом своих трудов!