Светодиодная матрица для часов своими руками

Добавил пользователь Евгений Кузнецов
Обновлено: 05.10.2024

Схема сборки нашего Ардуино проекта





Распиновка ардуино Nano 3.0:





Код прошивки :

DS3231 rtc(SDA, SCL); // Real time clock

const byte LDR_PIN = A2; // LDR Sensor pin

char buf[BUF_SIZE], secs[4];
uint8_t dots;


// SPI hardware interface
// Max72xxPanel matrix = Max72xxPanel(CS_PIN, H_DISPLAYS, V_DISPLAYS);
MD_MAX72XX matrix = MD_MAX72XX(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);

const byte WAIT = 100;
const byte SPACER = 1;
byte FONT_WIDTH;

Большие часы на адресных светодиодах WS2812B

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

Как-то раз на просторах зарубежного интернета я нашел вот такой проект часов на базе светодиодной ленты WS2812B: Big, Auto Dim, Room Clock, и мне захотелось его повторить. Часы устроены как семи сегментный циферблат и работают на RTC модуле DS3231 . Часы умеют показывать температуру, имеют кнопки для настройки и перевода на зимнее время и обратно, позже я добавил датчик влажности DHT11. Температура уже вместе с влажностью считывалась с этого датчика и выводилась раз в минуту. Хоть и в модуле часов есть температурный датчик, но похоже он показывал температуру не корректно из-за самонагрева (ИМХО).

Когда все было собрано, повозившись с библиотеками, все заработало. И тут возникло одно большое НО: положения яркости в только в двух позициях меня не устраивало. Тем более на границе значений происходило мерцание. Установка яркости на статичном значении меня тоже не очень устраивала ибо днем при установленном тусклом свете ничего не было видно, а ночью даже со значениями близким к минимуму можно было осветить всю Москву. Поинтересовавшись как в других проектах с этим справляется Alex было решено заменить такой код настройки яркости.

Тут стоит упомянуть что программистом я не являюсь и большинство проблем я пытаюсь решить методом тыка и перебора.

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

Что касается кода вот сылка на GitHub. Кое-что я перевел для лучшего понимания.

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

Thug Robot

Насчет отключения и мерцания, я бы посоветовал проверить через serial monitor показания значения твоего фоторезистора(желательно в разных условиях -> день/ночь и т.д.), для этого можно написать простой код который является пракически тем же самым что и твоя изначальная функция BrightnessCheck()
Только поставь delay(2000) //пару секунд , после каждого получения значений, после этого если не трудно то сделай скрин(ы) и выложи сюда.
Все это для того что бы определить является ли твоя проблема программной или же технической.
Однако я предролагаю что это скорей всего второе.

И кстати говоря, я только обатил внимание, почему ты используешь 1кОм на фоторезистре? Обычно используется 10 кОм.
Сделай все то что я тебе предположил в предыдущем коментарии, потом замени резистор о повтори процедуру. Обрати внимание на показания.
Хотя в идеале лучше же конечно использовать вот такой девайс TSL2561

ViVant

Рисуя схему допустил ошибку. Да, на фоторезисте используется резистор на 10 кОм. Схему перезалил.

Промониторив значения на выходе фоторезистора заметил, что при слабом освещении происходили скачки этих самых значений.

Перебрав пару способов, получилось убрать мерцание и отключение ленты. Мерцание я поборол добавив в код строчку с округлением значения кратному 10, а полное отключение разрешилось добавлением единицы к значению яркости. Ибо иногда на выходе функции получалось 0. Хотя как там получался ноль я не представляю, потому что из-за наличия функций map и constrain, этого происходить не должно. Хоть и это, наверное, костыли, но это работает.

ViVant

Приветствую. Сперва об ошибке. У меня тоже такое пишет, но спокойно прошивается и работает.
На счёт количества светодиодов, тут нужно менять весь массив. Первый индекс это количество символов. Их так и остается 13. А второй это количество диодов в одном символе. В вашем случае, получается, их число будет 7.
Если все правильно, то должно выглядеть как-то так:

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


Представляем ещё одни довольно простые, но вполне универсальные часы с использованием типовой светодиодной матрицы 32×8 LED элементов, которые имеют датчик температуры, влажности и давления BME280, таймер реального времени DS1307, фоторезистор для подстройки яркости и динамик. основа конструкции — процессор Atmega328p.

Схема часов на LED матрицах


Часы на задней панели имеют 3 кнопки, которые можно использовать для установки времени и даты, установки будильника и включения / выключения звукового сигнала при изменении времени. Кроме того, часы наверху имеют фоторезистор, который автоматически устанавливает яркость дисплея.


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


Что касается чипа реального времени, тут использован DS1307, но можно попробовать и DS3231.


Демонстрация работы часов

Далее смотрите фото индикации времени, далее даты, потом температуры и в конце влажности, после чего цикл с интервалом в несколько секунд повторяется.


В программе идёт плавная смена данных на экране по типу бегущей строки.


Датчик измерения влажности DHT22 достаточно точный, но по ходу сборки тестировались несколько других датчиков (DHT11, DHT22, BME280), из них DHT22 был наиболее подходящим.


А если вам хочется чего-то более оригинального — попробуйте собрать часы из осциллографа. В архиве имеется шестнадцатеричный код программы и схема, сделано в старой версии KiCad — скачать файл.



Всем доброго времени суток! Хочу поделиться небольшой, но приятной мелочью — часами собственного дизайна :). Приближается Новый Год, а, значит, родным и близким можно сделать и подарить что-то интересное. Уже давно крутилась мысль подарить часы. Но не простые, а с какой-нибудь приятной мелочью. В итоге получились часы на светодиодной матрице. Требования были следующие:

Требования.

— Энергонезависимость. Часы не должны сбрасываться при отключении питания;
— Эстетичность. Должна присутствовать какая-никакая эстетика. Все-таки будут стоять на видном месте;
— Должна присутствовать некая изюминка. Это и будет приятной мелочью;
— Наличие нескольких будильников;
— Простота и надежность.

Схема.

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


Часть третья. Индикация.
Используется простая динамическая индикация. Для придания хорошей контрастности две пленки наклеены друг на друга. Они так же хорошо скрывают щель между корпусом и индикатором. Пленка — ORACAL 8300.

Интерфейс.

Интерфейс простой. Всего несколько менюшек:
1. БУД1 — Будильник 1(рабочий день). Установка времени.
2. БУД2 — Будильник 2(выходной день). Установка времени.
3. ЗВК1 — Включение\отключение звонка(рабочий день).
4. ЗВК2 — Включение\отключение звонка(выходной день).
5. ЧАС — Установка текущего времени.
6. ДЕНЬ — Установка дня недели.
7. СБРС — Сброс. Нужен при смене батарейки.

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

Конструктив.


Конструкция достаточно простая. Плата крепится на стойки. Стойки приклеиваются к передней крышке. В ней вырезается отверстие под индикатор. В задней части корпуса сделаны отверстия под кнопку, провод питания и вентиляцию.

Светодиодных часов продаётся гора - маленькие, средние, с большими цифрами. Но что если нужны индикаторы ещё больше? Придётся делать своими руками! Вот цифровый часы RGB, которые сделаны на светодиодных лентах WS2812B. Это реально большие часы. Высота цифр составляет около 110 мм, а вся конструкция имеет размеры высота = 190 мм, ширина = 480 мм, глубина = 60 мм. Они были сделаны из таких материалов, как оргстекло, вспененный ПВХ, дерево, но в принципе пойдёт всё что есть под рукой.

Изготовление корпуса больших часов

Предполагалось, что часы будут сделаны так, чтобы их можно было увидеть из любой точки большой комнаты. Визуальный дизайн был создан в Fusion 360. Электроника в Eagle, программное обеспечение в Bascom.


Вначале с помощью самодельного фрезерного станка с ЧПУ выфрезеровали канавки на деревянной доске, в которую поместили нарезанные светодиодные ленты, по два LED в каждой. То есть два светодиода на каждый сегмент дисплея. Затем все нарезанные кусочки были соединены тонкими проводами.



Потом снова на помощь пришёл ЧПУ. Вырезаем отверстия из вспененного ПВХ для всех сегментов дисплея. Две пластины толщиной 5 мм и одна 1 мм. В конце разрезаем по размеру оргстекло.



Сборка идёт по порядку: деревянное основание со светодиодными лентами, две 5-миллиметровые ПВХ-пластины (позже использовал светорассеивающий фильтр), затем ПВХ 1 мм, окрашенный в черный лак, и, наконец, оргстекло, тонированное фольгой лобового стекла автомобиля. Все это скрутить декоративными винтами. На том же фрезерном станке вырезаем корпус электроники, а также ручку для настенного монтажа.

Электроника часов (схема и программа)

Печатная плата создана методом ЛУТ. Все контролируется м/к Atmega8 с тактовой частотой 16 МГц на кварце, питание от готового импульсного источника питания. Блок питания установлен на основной плате, как показано на фото.



Схема имеет датчик освещенности для автоматической регулировки яркости и вход для цифрового датчика температуры DS1820. Также добавлена возможность устанавливать цвет дисплея часов (10 цветов плюс случайное изменение цвета каждую секунду). Установка цвета отображения температуры. А ещё:

  • Восемь настроек для точек между часами и минутами.
  • Четыре различных эффекта перехода между временем и температурой.
  • Восемь настроек минимальной яркости дисплея в темноте плюс максимальная яркость.
  • Время отображения часов от 5 с до 45 с плюс только часы все время без термометра.
  • Время отображения температуры от 1 до 9 с.




Вот такой получился интересный проект, который при желании можно ещё увеличить путём удлинения и утолщения кусков светодиодной ленты. Если кто-то также захочет сделать эти часы, во вложении все необходимые файлы и описание.

Форум по обсуждению материала БОЛЬШИЕ ЧАСЫ НА LED ЛЕНТАХ


В каком направлении течет ток - от плюса к минусу или наоборот? Занимательная теория сути электричества.


Микрофоны MEMS - новое качество в записи звука. Описание технологии.


Про использование технологии беспроводного питания различных устройств.


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

Читайте также: