ARDUINO Огненный светильник v1. Обсуждение проекта

Stettson

✩✩✩✩✩✩✩
18 Дек 2023
7
0
@Андрей К.,уже да. Сначала к 5му припаял, но ни там ни на 6м не реагирует. Думаю нет смысла на 13 паять
 

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
326
32
Москва. Щукино
А лента не с браком ? Вдруг в ней причина ? Попробуй залить какой то другой скетч... будет работать лента ?
Кстати, сопротивление можно не паять... Там у вас не бешеная нагрузка...
Я делал светильник и никаких проблем не возникало. Там всё просто...
 

Stettson

✩✩✩✩✩✩✩
18 Дек 2023
7
0
@Андрей К., ленту не проверял. Новая с бобины. Один кусок же должен включиться или пару диодов где-то моргнуть
 

Stettson

✩✩✩✩✩✩✩
18 Дек 2023
7
0
Напряжение на всех лентах одинаковое. Масса присутствует. Сигнальный тоже
 

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
326
32
Москва. Щукино
Тогда проверяйте сопротивление, может оно в обрыве или очень большого номинала... Исключите его совсем...
Или залейте данный скетч, должно работать.

радуга:
#include <Adafruit_NeoPixel.h> // подключаем библиотеку
// указываем количество пикселей в матрице и пин подключения
Adafruit_NeoPixel strip(35, 6, NEO_GRB + NEO_KHZ800);

void setup() {
  strip.begin();                     // инициализируем объект NeoPixel
  strip.show();                      // отключаем все пиксели на ленте
  strip.setBrightness(50);           // указываем яркость (максимум 255)
}

void loop() {
  for (uint16_t t = 0; t < 256; t++) {
    for (uint16_t p = 0; p < strip.numPixels(); p++) {
      strip.setPixelColor(p, Wheel((p + t) & 255));
    }
    strip.show();                    // отправляем информацию на ленту
    delay(10);                       // задержка для эффекта (можно менять)
  }
}
// функция Wheel задает нужный цвет пикселям (RGB)
uint32_t Wheel(byte WheelPos) {
  WheelPos = 255 - WheelPos;
  if (WheelPos < 85) {
    return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  }
  if (WheelPos < 170) {
    WheelPos -= 85;
    return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
  WheelPos -= 170;
  return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
}
 
Изменено:

Stettson

✩✩✩✩✩✩✩
18 Дек 2023
7
0
@Андрей К.,короче, отпаял резистор и заработало. Причём сразу. Непонятно, почему не сказали в видео. И непонятно сколько это всё проработает без сопротивления. В общем благодарочка. Седых волос добавилось)))17029193089825917927826529558405.jpg
 

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
326
32
Москва. Щукино
@Stettson,
Вероятно сопротивление было очень большое... бОлее 200 омм.. Оно нужно для того, чтоб не погорел выход ардуины... но это может быть если подключено очень много лент. В вашем случае нагрузка на выход ардуино микроскопическая. Проработает очень долго.
 

martyn-gad1

✩✩✩✩✩✩✩
22 Сен 2022
2
0
Ребята, подскажите тупанькому, как в первой версии лампы отключить автопереключение режимов. Я понимаю, что напишите закомментируй такую-то строку кода... Вот и хочу узнать какую и как это "закомментировать" пошагово если не трудно, в програмировании я туп как дерево.
 

martyn-gad1

✩✩✩✩✩✩✩
22 Сен 2022
2
0
Спасибо, но мне нужно чтобы автопереключения небыло вообще. Дело в том, что лампа будет использоваться только от АКБ с механической кнопкой отключения питания. Применяться в спектаклях, а актеры люди не от мира сего, будут забывать нажать четыре раза после включения.
 

Сотнег

★★★★★★★
15 Янв 2020
4,654
1,573
@martyn-gad1,
один раз выключить надо.
Она запомнит.
Потом кнопку вообще можно выкинуть, наверное.

А если лампа своё состояние не запоминает, тогда строчку
boolean autoplay = true;
поменяйте на
boolean autoplay = false;
 
Изменено:

karanighty

✩✩✩✩✩✩✩
11 Авг 2024
5
0
Всем привет! Хотел взять прошивочку для лампы без вафли, но ссылка, указанная на странице проекта(alexgyver.ru/gyverlamp) оказалась нерабочей(тема удалена). Если у кого-то что-то осталось - скиньте, пожалуйста:) Нужна прошивка с управлением кнопкой/сенсорной кнопкой, лампа будет стоять в глухой деревне)) Заранее огромное спасибо!
 

maksland

★★★✩✩✩✩
13 Янв 2019
628
148
Omsk
остановился пока на этом:
есть труба 50мм поликарбонат, опал
питание -7-17в (DCDC 2А) 4 ленты по 12-14 светодиодов (соединение последовательное и все приклеено на алюминиевую профиль трубу 15*15мм ), управление -сенсор
платы готовы для заказа, но надо еще свежим взглядом проверить через время на ошибки
сетч использовал с 4 независимыми лентами по 14 светодиодов каждая, так интереснее
но корпус надо переделать, как на 3D принтер накоплю
 

Вложения

Изменено:

ВладиславЖиваго

✩✩✩✩✩✩✩
20 Ноя 2023
2
0
Подключил к лампе 2 акь 18650 через тп4056 , при подключенном кабеле все работает , если отключить кабель все работает от акб. А вот если разорвать цепь питания акб и подключить обратно, без включения в сеть лампа не реагирует. В чем может быть проблема?
 

Сотнег

★★★★★★★
15 Янв 2020
4,654
1,573
@ВладиславЖиваго,
возможно, вы темой ошиблись, и плата у вас не Arduino Nano.
В таком случае есть нюанс у платы.

Два года назад вы уже описывали похожую проблему в другой теме.
Ответ читали?
 
Изменено:

ТехнарьКто

★★★★★✩✩
13 Янв 2020
273
459
Протестируйте кому не лень.

Техническое описание программного обеспечения GyverLamp_v1.4_Arduino_Kto_v1
1. Назначение и общие сведения

GyverLamp_v1.4_Arduino_Kto_v1 — специализированное встроенное программное обеспечение (прошивка), предназначенное для управления интерьерными светильниками на базе адресуемых светодиодных матриц.

Данное ПО является модифицированным форком (ответвлением) проекта разработчика Norovl, который, в свою очередь, базируется на оригинальной архитектуре GyverLamp от AlexGyver. Настоящая версия полностью адаптирована и оптимизирована отечественным разработчиком ТехнарьКто для работы на вычислительных мощностях с жестко ограниченными ресурсами.

Ключевые особенности архитектуры:
Аппаратная оптимизация: код полностью переработан под тактовую частоту 16 МГц и архитектуру микроконтроллера ATmega328p (платформа Arduino UNO).

Эффективное управление памятью: благодаря оптимизации алгоритмов и агрессивному использованию макроса F(), динамическое потребление ОЗУ (SRAM) снижено до минимума. Это позволило интегрировать расширенный пул визуальных эффектов, ранее физически не помещавшихся в оперативную память платформ класса Arduino UNO.

Целевое назначение: прошивка разработана в образовательных и демонстрационных целях, снабжена избыточным (детальным) комментированием исходного кода, что облегчает изучение принципов программирования адресных светодиодов.


2. Аппаратные и программные требования
Для корректного функционирования системы необходимо строгое соблюдение следующих параметров:

Спецификация оборудования
Вычислительный модуль: Arduino UNO (или совместимый аналог с МК ATmega 16 МГц).

Светодиодный модуль: Адресуемая светодиодная матрица формата 16х16.

Топология матрицы: Жестко заложена поддержка Z-топологии (укладка строк «зигзаг»). На матрицах с параллельной (ленточной) укладкой или другим разрешением корректная геометрия эффектов не гарантируется.

Органы управления: Механическая тактовая кнопка (опционально).

Программные зависимости
Среда разработки: Скетч успешно компилируется в среде Arduino IDE версии 1.8.19 под управлением ОС Windows 10.

Графическое ядро: В скетче задействована библиотека FastLED версии 3.2.9. Совместимость с более ранними или поздними версиями FastLED разработчиком не тестировалась.

Драйвер кнопки: Для обработки нажатий строго требуется использование специализированного форка библиотеки Norovl (модификация HOLDButton). С другими библиотеками алгоритм управления работать не будет.

Схема электрических соединений
Компонент​
Вывод компонента​
Вывод Arduino UNO​
Назначение​
Светодиодная матрицаDIN (Data In)D2Линия передачи данных
GNDGNDОбщая земля
5V5V / Внешний БПЛиния питания 5V
Тактовая кнопка (опционально)Вывод 1D4Сигнальный опрос кнопки
(опционально)Вывод 2GNDСигнальная земля
⚠ Важное замечание по питанию: Убедитесь, что источник питания 5 В обеспечивает достаточную силу тока для работы светодиодной матрицы на 256 диодов. Питания от USB-порта компьютера может не хватить на максимальной яркости.


3. Функциональные возможности и визуальные эффекты
Программное обеспечение включает в себя 21 оптимизированный световой эффект. Большинство алгоритмов спроектировано с нуля или переработано с акцентом на минимальное использование динамической памяти.

Перечень интегрированных режимов:
Конфетти

Огонь V2.0 (авторская глубокая оптимизация ОЗУ, визуально эквивалентная оригиналу)

Радуга вертикальная

Радуга горизонтальная

Смена цвета

3D Безумие

3D Облака

3D Лава

3D Плазма

3D Радуга

3D Павлин

3D Зебра

3D Лес

3D Океан

Светлячки V2.0 (авторская оптимизация потребления ОЗУ)

Снегопад

Матрица

Переключение чистых цветов (авторский скетч; режим «Белая лампа» активируется при выкручивании масштаба в крайнее противоположное положение)

Калейдоскоп (абсолютно новый авторский алгоритм)

Бегунок (авторский скетч: одиночный движущийся элемент из трех пикселей со световым шлейфом)

Радужный снег

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

Умный демо-режим: автоматическая циклическая смена эффектов активируется сразу после первой прошивки или полного сброса. При первом физическом нажатии на кнопку управление бесшовно передается пользователю.

Автономные интерактивные логи: устройство передает подробную русскоязычную телеметрию в аппаратный Serial-порт. На любое действие пользователя генерируются текстовые ИИ-сообщения.

Логика работы ИИ-сообщений: вывод «умных» реплик реализован полностью локально внутри программного кода микроконтроллера. Алгоритм отслеживает события (количество последовательных нажатий кнопки) и проверяет соответствующие флаги состояния в энергонезависимой памяти, формируя уникальный текстовый вывод под каждую ситуацию.


4. Интерфейс пользователя и управление
Взаимодействие со светильником осуществляется с помощью одной тактовой кнопки.

4.1. Дискретные команды (короткие клики)
Управление логикой работы устройства выполняется через подсчет количества последовательных нажатий:

1 нажатие: Коммутация состояния (Включение / Отключение устройства).

2 нажатия: Переход к следующему визуальному эффекту по списку.

3 нажатия: Возврат к предыдущему визуальному эффекту по списку.

4 нажатия: Активация/деактивация демонстрационного режима (автосмена эффектов каждые 3 секунды). Примечание: ручной переход к следующему/предыдущему эффекту автоматически отключает демо-режим.

5 нажатий: Сохранение текущих параметров (яркость, скорость, масштаб) для всех режимов в энергонезависимую память (EEPROM). Успешная запись подтверждается автоматическим циклом перезапуска (светодиодная матрица гаснет и включается вновь).

9 нажатий: Полный аппаратный сброс. Инициирует глубокое форматирование (очистку) EEPROM. Процесс сопровождается световой индикацией: мерцание красным цветом (идет очистка данных), непрерывное зеленое свечение (завершение процедуры), после чего устройство уходит в автоматическую перезагрузку.

4.2. Аналоговые регулировки (клики с удержанием)
Изменение числовых параметров выполняется по принципу: N коротких кликов + удержание кнопки на последнем нажатии.

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

1 клик + удержание: Регулировка общего уровня яркости. Визуальный маркер: красная вертикальная полоса.

2 клика + удержание: Изменение скорости анимации эффекта. Визуальный маркер: зеленая вертикальная полоса.

3 клика + удержание: Изменение геометрического масштаба эффекта. Визуальный маркер: синяя вертикальная полоса.


5. Порядок развертывания, настройки и пасхальные функции
Сценарий: Настройка стартового эффекта в демо-режиме

Если требуется, чтобы после включения питания лампа автоматически запускала демо-режим, начиная с определенного эффекта, выполните следующий алгоритм:

Перейдите на эффект, предшествующий желаемому.

Активируйте демо-режим с помощью 4 нажатий.

Дождитесь или вручную перейдите на выбранный вами эффект (он зафиксируется первым в цикле).

Сохраните конфигурацию в памяти с помощью 5 нажатий. При последующих включениях устройство начнет показ именно с этого режима.

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

Подключите плату Arduino UNO к ПК через USB-кабель.

В Arduino IDE откройте вкладку «Монитор порта» и установите скорость передачи данных 115200 бод.

Выполните 9 коротких кликов на кнопке управления устройством для полной очистки EEPROM.

Нажмите кнопку «Очистить вывод» в окне Монитора порта.

Нажмите физическую аппаратную кнопку Reset на самой плате Arduino UNO. Сразу после перезагрузки в терминал будет выведена скрытая текстовая справка проекта.


6. Юридический статус и условия распространения
Данное программное обеспечение распространяется на условиях open-source (свободное ПО). При наличии оригинального набора файлов у пользователя отсутствуют какие-либо ограничения на коммерческое или некоммерческое использование. Разрешено:

Беспрепятственное размещение проекта на любых общедоступных и частных информационных ресурсах.

Создание производных модификаций (форков) и изменение исходного кода.
 

Вложения

ТехнарьКто

★★★★★✩✩
13 Янв 2020
273
459
Особенности работы с энергонезависимой памятью (EEPROM) и инициализации интерфейса
В ходе тестирования платформы Arduino Uno под управлением актуальной версии загрузчика Urboot были выявлены следующие особенности функционирования программного обеспечения:

  1. Инициализация при пустом EEPROM
    При первой загрузке скетча на контроллер с очищенной памятью EEPROM вывод информационных подсказок по назначению кнопок в последовательный порт (UART) не происходит. Данный сбой обусловлен тем, что процедура отправки данных начинается до завершения полной инициализации аппаратного порта. Принудительный сброс параметров (путем девятикратного нажатия кнопки управления) решает эту проблему.
  2. Изменение базовой яркости через исходный код (#define)
    По умолчанию в коде установлено значение #define BRIGHTNESS 20. Прямое изменение этого параметра в теле программы (например, с 20 на более высокое) не приведет к автоматическому изменению яркости на устройстве после стандартной перепрошивки. Данная логика заложена разработчиком намеренно с целью сокращения циклов перезаписи и продления ресурса памяти EEPROM.
Инструкция по применению новых настроек
Для корректного применения изменений, внесенных в исходный код (включая директивы #define), необходимо строго соблюдать следующую последовательность действий:

  1. Загрузите обновленный скетч в микроконтроллер Arduino.
  2. Нажмите управляющую кнопку 9 раз для инициализации процедуры сброса.
  3. Дождитесь светодиодной индикации окончания процесса (устройство выполнит 3 короткие вспышки красным цветом и 1 вспышку зеленым).
  4. Перезагрузите контроллер: нажмите кнопку Reset на плате Arduino либо кратковременно отключите и заново подайте внешнее питание.
После выполнения указанных шагов актуальные конфигурационные параметры из скетча будут принудительно записаны в EEPROM и приняты программой в качестве базовых.
Дополнительно предусмотрена возможность индивидуальной настройки: яркость для каждого отдельного эффекта можно скорректировать вручную (с помощью нажатия с удержанием кнопки) и сохранить текущую конфигурацию в память устройства пятикратным коротким нажатием.
 

ТехнарьКто

★★★★★✩✩
13 Янв 2020
273
459
Инструкция по сборке и подключению LED-матрицы 16х16 (WS2812B) на Arduino Uno

Данное руководство содержит правила безопасного подключения матрицы из 256 адресных светодиодов, расчет параметров питания, требования к охлаждению и схему подключения тактовой кнопки. Все пины и лимиты привязаны к конфигурации из скетча.


1. Режимы питания и температурный режим

Матрица 16х16 содержит 256 светодиодов. Каждый диод на максимальной яркости (чистый белый цвет) потребляет до 60 мА. Без ограничений пиковый ток матрицы равен: 256 × 0.06 А = 15.3 Ампера (76.5 Ватт).


Выбор параметров питания зависит от настроек скетча и условий эксплуатации:

Вариант 1. Безопасный «холодный» режим (По настройкам в скетче)

В скетче задана конфигурация лимита тока:
#define CURRENT_LIMIT 2000 // Лимит тока в мА (0 - выкл)
  • Выбор блока питания: Благодаря ограничению в 2 Ампера (2000 мА), громоздкий металлический источник питания не требуется. Для работы схемы рекомендуется использовать обычный качественный USB-адаптер (зарядку от телефона) или сетевой БП «вилка» на 5V с током 2А–3А.
  • Температурный режим: В этом режиме матрица практически не нагревается. Её можно смело монтировать в любые пластиковые корпуса, деревянные рамки или закрытые короба без использования дополнительного теплоотвода (радиатора).
Вариант 2. Работа на полной мощности (Если отключить лимит в коде)

Если в будущем изменить настройку на #define CURRENT_LIMIT 0 (выключить лимит), матрица заработает на максимум:
  • Выбор блока питания: Потребуется мощный стабилизированный блок питания 5V с током не менее 15А–20А (с запасом 20-30%, чтобы источник питания не работал на пределе возможностей).
  • ⚠ Внимание — Нагрев! Из общей электрической мощности 76.5 Ватт порядка 70 Ватт выделяется в виде чистого тепла (из-за КПД светодиодов). На гибкой или тонкой подложке матрица быстро разогреется выше 70°C, что приведет к деградации и выгоранию диодов.
  • Требуется теплоотвод: В этом режиме настоятельно рекомендуется наклеить матрицу на теплопроводящее основание — алюминиевый лист, пластину или радиатор через термоскотч.

2. Защитные компоненты: зачем они нужны
  • Развязывающий диод (1N4007): Защищает порт USB компьютера и пины Arduino от выгорания. Ставится в разрыв провода питания между силовой шиной +5V матрицы и пином 5V на Arduino (анодом к матрице, катодом к Arduino). Когда блок питания матрицы выключен, а Arduino шьется по USB, диод физически не пускает ток от компьютера на матрицу. При работе от БП — тока достаточно для питания микроконтроллера.
  • Резистор на линии данных (330–470 Ом): Длинные провода обладают индуктивностью. При передаче цифрового сигнала возникают высоковольтные всплески напряжения («звон»). Резистор сглаживает эти фронты, защищая первый пиксель матрицы от выгорания. Его необходимо ставить в разрыв провода между пином LED_PIN (Пин 2) на Arduino и входом DIN матрицы.
  • Силовой конденсатор (1000–2200 мкФ, 6.3В или 16В): В моменты смены эффектов происходят мгновенные просадки тока. Конденсатор работает как буфер, сглаживая пульсации и защищая контроллеры внутри светодиодов от перезагрузки. Рекомендуется ставить его прямо на силовые клеммы питания матрицы (+5V и GND).
  • Конденсатор параллельно кнопке (0.1 мкФ): Механические контакты при замыкании «дребезжат», вызывая ложные повторные нажатия в коде. Керамический конденсатор емкостью 0.1 мкФ (маркировка 104), припаянный параллельно контактам кнопки, физически гасит этот дребезг. Одно нажатие на пин BTN_PIN (Пин 4) всегда будет считываться ровно как одно.

3. Главные правила монтажа
  1. Точки питания матрицы. Для режима с ограничением в 2000 мА достаточно подключить силовые провода от БП в одной точке (например в начале матрицы). Но если использовать мощный БП без ограничений тока, тонкие дорожки платы не пропустят через себя 15А. Тогда придется подать 5V и GND параллельно минимум в двух-трех местах: к началу, середине и к концу матрицы.
  2. Толщина проводов. Для «холодного» режима 2А подойдут стандартные провода сечением 0.5 мм². Если лимит тока убран и используется мощный БП, провода от него до матрицы должны быть медными и толстыми — не менее 1.5 мм² (16 AWG).
  3. Общая земля (Важнейшее правило). Земля (GND) внешнего блока питания 5В и земля (GND) платы Arduino обязательно должны быть соединены вместе. Без общей земли цифровой сигнал с пина 2 превратится в хаотичный шум.

4. Пошаговый кабельный план подключения
🔌 Силовая часть (Питание)

  1. От клеммы +5V внешнего БП провода идут на силовые контакты +5V матрицы (в начале, а при высокой мощности — также в середине и конце).
  2. Прямо в эти же клеммы БП +5V и GND зажимаются ножки силового конденсатора (длинная в +, короткая с полосой в -).
  3. От силовой шины +5V матрицы идет провод к аноду (сторона без полосы) диода 1N4007.
  4. От катода (сторона с полосой) диода 1N4007 провод идет в пин 5V на плате Arduino Uno.
  5. От клеммы GND внешнего БП провода идут на контакты GND матрицы и один провод идет на пин GND Arduino.
📟 Сигнал управления
  1. От пина Digital 2 (LED_PIN) на Arduino провод идет к резистору 330 Ом.
  2. От второй ножки этого резистора провод идет на вход DIN матрицы.
🔘 Модуль кнопки
  1. К двум контактам тактовой кнопки параллельно припаивается керамический конденсатор 0.1 мкФ.
  2. От одного контакта кнопки провод идет на пин Digital 4 (BTN_PIN) на Arduino.
  3. От второго контакта кнопки провод идет на любой свободный пин GND на Arduino.

5. Чек-лист перед включением
  1. В функции setup() скетча активирована защита: FastLED.setMaxPowerInVoltsAndMilliamps(5, CURRENT_LIMIT);.
  2. Диод 1N4007 установлен в цепи питания Arduino строго полосой (катодом) в сторону пина 5V платы.
  3. Соединены вместе все земли (GND матрицы, GND Arduino, GND источника питания).
  4. Резистор 330 Ом распаян в разрыве провода от пина 2 Arduino до входа данных матрицы.
  5. Кнопка подключена к пину 4 и GND, а параллельно её контактам припаян конденсатор 0.1 мкФ.