Литофановая лампа

Источник:

Эта модель вмещает 2 литофана размером 100х70 мм и 1 литофан размером 100х60 мм. К сожалению, в этой конструкции все еще есть несколько проблем, которые я хочу исправить в будущем.

Я использовал светодиод WS2812B и Arduino nano. Если у вас есть вопросы, задавайте их в комментариях.

Я использовал этот сайт для создания литофана https://tool.itslitho.com/CreateModel.
Вам нужно выбрать Границу в качестве Рамки.

Руководство по строительству:

что вам нужно:
Версия 1:
Ардуино Нано
6 светодиодных лент по 5 светодиодов.
1 кнопка 6x6x4,5 мм
соединительный кабель
6 винтов
Версия 2:
Ардуин�� Нано
6 светодиодных лент по 5 светодиодов.
1 кнопка 6x6x4,5 мм
соединительный кабель
4 круглых магнита 5x1 мм.

Версию 1 построить намного проще.

также используйте изображения на обложке, чтобы получить лучшее представление.

Шаг 1:

3x подключения 5 В к 5 В, Din к Dout и GND к GND

следите за стрелкой на светодиодной ленте.

Шаг 2:

3x подключения 1 соединительного кабеля «мама» t 5 В, Din и GND

Шаг 3:

возьмите один из светодиодных наконечников и подключите соединительные кабели, как показано на рисунке.

Шаг 4:

Возьмите кнопку и подключите к ней соединительные кабели с внутренней резьбой, как показано на рисунке.

Шаг 5:

теперь можно клеить светодиодные ленты в рамки

Базовый кадр:

Шаг 6:

возьмите подставку и нажмите кнопку в отверстии.
возможно, отверстие нужно немного увеличить, для этого можно использовать напильник или паяльник.

Шаг 7:

теперь можно все соединить и прикрутить.

Шаг 8:

наконец, вам нужно подключить все к Arduino Nano и загрузить код.
Светодиодная лента:
DIN к контакту 6 (D6)
от 5 В до 5 В
Земля к земле
кнопка:
один кабель с контактом 3 (D3)
другой кабель с GND

/ анимация. В исходном состоянии все пиксели отключены — нажмите кнопку один раз, чтобы
// запускаем первую анимацию. Как написано, кнопка не прерывает
// анимация в процессе, работает только в режиме ожидания.

#include
#ifdef __AVR__
#include // Требуется для Adafruit Trinket с частотой 16 МГц
#endif

// Цифровой вывод ввода-вывода, подключенный к кнопке. Это будет осуществляться с помощью
// подтягивающий резистор, чтобы переключатель на мгновение замыкал контакт на землю.
// При переходе от высокого к низкому будет выполняться логика нажатия кнопки.
#define BUTTON_PIN 3

#define PIXEL_PIN 6 // Цифровой вывод ввода-вывода, подключенный к NeoPixels.

#define PIXEL_COUNT 30 // Количество неопикселей

// Объявляем наш объект полосы NeoPixel:
Полоса Adafruit_NeoPixel (PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800);
// Аргумент 1 = Количество пикселей в полосе NeoPixel
// Аргумент 2 = номер контакта Arduino (большинство из них действительны)
// Аргумент 3 = Флаги типа пикселя, суммируйте по мере необходимости:
// NEO_KHZ800 Битовый поток 800 кГц (большинство продуктов NeoPixel со светодиодами WS2812)
// NEO_KHZ400 400 кГц (классические пиксели FLORA 'v1' (не v2), драйверы WS2811)
// Пиксели NEO_GRB подключены к битовому потоку GRB (большинство продуктов NeoPixel)
// Пиксели NEO_RGB подключены к битовому потоку RGB (пиксели v1 FLORA, а не v2)
// NEO_RGBW Пиксели подключены к битовому потоку RGBW (продукты NeoPixel RGBW)

логическое значение oldState = ВЫСОКИЙ;
режим int = 0; // Активный в данный момент режим анимации, 0-9

недействительная настройка() {
pinMode (BUTTON_PIN, INPUT_PULLUP);
полоса.начать(); // Инициализируем объек�� полосы NeoPixel (ОБЯЗАТЕЛЬНО)
полоса.шоу(); // Инициализируем все пиксели как «выключенные»
}

недействительный цикл() {
// Получаем текущее состояние кнопки.
логическое значение newState = digitalRead(BUTTON_PIN);

// Проверяем, изменилось ли состояние с высокого на низкое (нажатие кнопки).
if((newState == LOW) && (oldState == HIGH)) {
// Короткая задержка для кнопки устранения дребезга.
задержка(20);
// Проверяем, находится ли кнопка в низком состоянии после устранения дребезга.
newState = digitalRead (BUTTON_PIN);
if(newState == LOW) { // Да, все еще низкий
если (++режим > 5) режим = 0; // Переход к следующему режиму, переход после #8
switch(mode) { // Запускаем новую анимацию...
случай 0:
colorWipe(strip.Color(0, 0, 0), 50); // Черный/выкл.
перерыв;
случай 1:
colorWipe(strip.Color(255, 0, 0), 50); // Красный
перерыв;
случай 2:
colorWipe(strip.Color(0, 255, 0), 50); // Зеленый
перерыв;
случай 3:
colorWipe(strip.Co

23:06
13
Нет комментариев. Ваш будет первым!

Ссылка появится после регистрации

Посещая этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.