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

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

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




Untitled Sketch_МП.png
И главное нанести много горячих соплей

IMG_20180907_120755.jpg


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

C:
void BrightnessCheck(){
  const byte sensorPin = BRI_PIN; // light sensor pin
  const byte brightnessLow = 1; // Low brightness value
  const byte brightnessHigh = 50; // High brightness value
  int sensorValue = analogRead(sensorPin); // Read sensor
  Serial.print("Sensor is: ");Serial.println(sensorValue);
  sensorValue = map(sensorValue, 0, 255, 1, 100);
  LEDS.setBrightness(sensorValue);
  };
вот такими строчками:
C:
void BrightnessCheck() {

  if (auto_bright) {                         // если включена адаптивная яркость
    if (millis() - bright_timer > 100) {     // каждые 100 мс
      bright_timer = millis();               // сброить таймер
      new_bright = map(analogRead(BRI_PIN), 0, bright_constant, min_bright, max_bright);   // считать показания с фоторезистора, перевести диапазон
      new_bright = constrain(new_bright, min_bright, max_bright);
      new_bright_f = new_bright_f * coef + new_bright * (1 - coef);
      LEDS.setBrightness(new_bright_f);      // установить новую яркость
    }
  }
};

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

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

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

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

Комментарии

RavenSin

✩✩✩✩✩✩✩
17 Дек 2022
7
0
Помогите с кодом. Я его взял чужой ибо плохо разбираюсь в написании кода. Я его изменить смог под свои часы, но они отказываются у меня идти время стоит статичное, что указал в коде. Может кто поможет.
 

Вложения

Leon111_09

★★★✩✩✩✩
6 Июн 2021
642
148
55
Таганрог
forum.wisecomp.ru

Вложения

RavenSin

✩✩✩✩✩✩✩
17 Дек 2022
7
0
@Leon111_09, в этом же обсуждении только в самом начале, может быть я библиотеки не те скачал, при компилировании когда только скачал ошибки были что в rtc_t нет get. и вот ваш скачал попробовал компилировать и та же ошибка.
 

RavenSin

✩✩✩✩✩✩✩
17 Дек 2022
7
0
Да вот она
In function 'void loop()':
Clock_1.9_final:307:10: error: 'RTC_t {aka struct RTC_struct}' has no member named 'get'
tm = RTC.get(); // Получение времени
^~~
Clock_1.9_final:384:41: error: 'RTC_t {aka struct RTC_struct}' has no member named 'write'
if (Now.Hour != hour(tm)) RTC.write(Now);
^~~~~
Clock_1.9_final:390:45: error: 'RTC_t {aka struct RTC_struct}' has no member named 'write'
if (Now.Minute != minute(tm)) RTC.write(Now);
^~~~~
Clock_1.9_final:398:14: error: 'RTC_t {aka struct RTC_struct}' has no member named 'write'
RTC.write(Now);}
^~~~~
Clock_1.9_final:401:14: error: 'RTC_t {aka struct RTC_struct}' has no member named 'write'
RTC.write(Now);}
^~~~~
Clock_1.9_final:408:39: error: 'RTC_t {aka struct RTC_struct}' has no member named 'write'
if (Now.Day != day(tm)) RTC.write(Now);
^~~~~
Clock_1.9_final:414:42: error: 'RTC_t {aka struct RTC_struct}' has no member named 'write'
if (Now.Month != month(tm)) RTC.write(Now);
^~~~~
Clock_1.9_final:420:41: error: 'RTC_t {aka struct RTC_struct}' has no member named 'write'
if (Now.Year != year(tm)) RTC.write(Now);
^~~~~
exit status 1
'RTC_t {aka struct RTC_struct}' has no member named 'get'

@Leon111_09,
 

RavenSin

✩✩✩✩✩✩✩
17 Дек 2022
7
0
@Leon111_09, понял что библиотека не подходит к моему МК, нашел другую и с ней понял что модуль времени похоже не рабочий. Он не устанавливает время в себя и, они с установленным изначально временем не идут и видимо вообще даже не подключается к ардуино. Использую Arduino Uno wifi Rev2. Незнаете в чем может быть причина, вдруг я зря на модуль наговариваю.
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
642
148
55
Таганрог
forum.wisecomp.ru
Не знаете в чем может быть причина, вдруг я зря на модуль наговариваю.
Для начала попробуйте запустить модуль часов через примеры (заодно и время выставите). Подключили правильно,на А4 и А5? А вообще, откуда я могу знать что у вас там собрано если вы даже модель модуля часов боитесь написать? :) Проверяйте правильность подключения обязательно.

Использую Arduino Uno wifi Rev2.
А чего нанку не поставили?Она туда прям просится,а эта жирно будет для часов :).
 

RavenSin

✩✩✩✩✩✩✩
17 Дек 2022
7
0
@Leon111_09,Как раз пробовал через пример сейчас, В них в мониторе порта выдает что модуль не обнаружен, подключил все правильно несколько раз перепроверил. Извиняюсь что сразу модель не написал, стоит ds3231. Насчет нанки, я хотел с wifi сразу чтоб вдруг попробовать сделать через wifi настройку цвета да и чтоб с esp не морочится, знакомый с ним много провозился, но сказал так и не получилось зацепить к ардуинке его.
 
Изменено:

Leon111_09

★★★✩✩✩✩
6 Июн 2021
642
148
55
Таганрог
forum.wisecomp.ru
Как раз пробовал через пример сейчас, В них в мониторе порта выдает что модуль не обнаружен, подключил все правильно несколько раз перепроверил.
Если есть обычная нанка то проверьте с ней.Если не заработает-значит проблема в модуле.

Насчет нанки, я хотел с wifi сразу чтоб вдруг попробовать сделать через wifi настройку цвета да и чтоб с esp не морочится, знакомый с ним много провозился, но сказал так и не получилось зацепить к ардуинке его.
я год пользовал часы на ардуине,сейчас переделал на ЕСП-прекрасно все работает.Не знаю что там ваш знакомый делал и какой гибрид пытался вывести,но такого типа часы прекрасно работают на одной еспшке,без подключения атмег. Кстати,я переделал часы под этот проект . Работают прекрасно,там даже модуль часов не обязателен. Так что советую заглянуть туда.Часы там как раз через вай-фай к интернету подключены,автосинхронизация.И много еще плюшек,вплоть до голосового сопровождения.
P.S. Утрете нос своему знакомому :)
 
  • Лойс +1
Реакции: poty

RavenSin

✩✩✩✩✩✩✩
17 Дек 2022
7
0
@Leon111_09,Благодарюза помощь, проверил модуль все ж виноват. Обязательно посмотрю что там за проект. Заинтересовали)
 

Bass70

✩✩✩✩✩✩✩
19 Фев 2023
3
0
Доброго времени суток. Собрал часы по проекту Вячеслава,скетч 1.95 все заработало без лишних танцев с бубном. Сейчас все на стадии оформления. Народ, подскажите. Есть мысль добавить включение мотор-редуктора через реле на несколько минут каждые 00 и 30 минут, (будет небольшая инсталляция). Как это правильно реализовать.
 

Zero-v

✩✩✩✩✩✩✩
23 Июн 2023
1
0
@kym13, не в подключении дело, все подключено тип-топ.Сейчас прошил скетч поста 46-работает!.А этот -нет.Что за ерунда? значит что-то в скетче? Голова кругом.

@Leon111_09,очепятка!
добрый день.!!! у тех у кого подобные проблемы, смотрите код и все будет работать, удачи

void loop() { // Основной цикл -------------------------------------------------------------------------------
if (read_eeprom) ReadEEPROM();
BrightnessCheck(); // Проверка яркости
time_t tm;
ЗАКОМЕНТИРОВАТЬ //if (millis() - opdating_time > 100){
tm = RTC.get(); // Получение времени
ЗАКОМЕНТИРОВАТЬ //opdating_time = millis();}
tmElements_t Now;
 

maloir

★✩✩✩✩✩✩
14 Сен 2019
88
24
Здравствуйте уважаемые форумчане!

Как только увидел данную тему, про себя подумал вот оно! то самое, но почитал и понял, не осилить. Прочел всю ветку и запутался в скетчах и датчиках, почему то именно им уделена здесь большая часть написаного, немного не понял почему? Вроде бы датчика то всего два, а уделено им столько времени.... даже вроде как понл они по просьбе были вписаны в скетч, но почему то их все равно просили добавить, в общем запутался, как результат. Печально....

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

Одельно хочу выразить свое почтение всем участником данной ветки и конечно Вячеслав_45, Большой человек, помогал всем хотя, как писал сам, не очень разбирался в програмировани. Выполнл все просьбы, удивительный человек, большой доброты. Так же большое уважение и другим участника, которые внесли в ветку свои скетчи, например Начинающий, понравился Ваш скетч, жаль только у меня не скомпелировался выдал ошибку. Хотя, когда читал ветку думал, почему все для зрячих, ведь не зрячие тоже хотят такие часы, но толку от них если их видят только гости зрячие, поэтому скет от Начинающего прямо попал в точку. Часы стали многофункциональны и для людей с ограниченными возможностями.

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

Понравился скетч с озвучкой от Начинающего, но как понял его реализация это не закоченный скетч от Вячеслав_45, понравился скетч от Sergo_ST https://community.alexgyver.ru/threads/bolshie-chasy-na-adresnyx-svetodiodax-ws2812b.233/post-125112 но не понял схему подключения, там что паять прямо к флкшке? Не совсем понятна реализация для чего поять к флешке если есть готовые модули, для чего такой гемор?

А теперь, простите куча дуратских вопросов, надеюсь найдется терпеливый человек и обьяснит.
Вопрос простой куча скетчей как найти тот самый? готовый? 1.9 это он? Что в нем реализовано?
Почему все скетчи без библиотек, почему нет к ним схемы или все собираются по одной схеме в шапке темы?
Вопрос, есть рабочий полный скет с библиотекой и схемой?
Фото резистор какой наминал?
Есть конкретные размеры корпуса часов? или все делают на глаз? интересуют размеры ячейки для ленты, какие они размеров? может есть у как-го шаблон? что бы распечатать на принторе. Видел готовые решени для 3д принтера, но принтера у меня нет, так что они для мен бесполезны.
Ну и плохо конечно что нет описаний функций часов полного.

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

с уважением!
 

kym13

★★✩✩✩✩✩
14 Ноя 2020
447
67
@maloir, ...готовый? 1.9 это он? - Да. ..... Что в нем реализовано?... так Вы скетч откройте и там все функции часов в начале описаны. Библиотеки стандартные( те что по умолчанию идут при установки IDE) могут понадобиться библиотеки для DS3232RTC, DS18b20 и EEPROM. Если выдаёт ошибку то что это за ошибка? здесь же нет ясновидящих. Схема как бы и не нужна в скетче все подключения расписаны. Что касается размеров сегментов, я делал на ширину светодиода т.е. 5мм, а длина зависит от кол-ва диодов на сегмент, а вообще на Ваше усмотрение(количество светодиодов на сегмент и т.д. может Вам захочется диоды в два ряда сделать в сегменте тогда будет ширина 10мм). Ниже скетч рабочий и проверенный, а также архив с нужными библиотеками и скрин настройки IDE.
 

Вложения

  • Лойс +1
Реакции: maloir

maloir

★✩✩✩✩✩✩
14 Сен 2019
88
24
@maloir, ...готовый? 1.9 это он? - Да. ..... Что в нем реализовано?... так Вы скетч откройте и там все функции часов в начале описаны. Библиотеки стандартные( те что по умолчанию идут при установки IDE) могут понадобиться библиотеки для DS3232RTC, DS18b20 и EEPROM.
Благодарю, попробую, думаю может ядро у меня не то, по схеме, просто нужны ли гдето весить резисторы на пины? или все напрямую - это не понятно. Фоторезистор какой наминал? или можно любой?

нет библиотеки Adafruit_BMP280.h: No such file or directory
 
Изменено:

kym13

★★✩✩✩✩✩
14 Ноя 2020
447
67
@maloir, Что касается фоторезистора его сопротивление от 300к до 1М, резистор нужен один на ногу к которой подключается управление лентой(светодиодами) его номинал 100-500 ом. Попробуйте эти библиотеки начните с этой Adafruit_BMP280_Library. Если фоторезистор будет работать наоборот поменяйте плюс(+) с минусом(-) местами. И по поводу схемы, в шапке же есть схема, правда там вместо датчика ВМР280 датчик DHT22
 

Вложения

Изменено:
  • Лойс +1
Реакции: maloir

maloir

★✩✩✩✩✩✩
14 Сен 2019
88
24
Больша просьба, может кто замерить один сегмент своих часов, высота, ширина, дл одного светодиода в чейке. Вот этот
Снимок2.PNG
К стати в часах не хватает радио. Вопрос Начинающему, или кто знает, как работает скетч его, вернее озвучка? а то не понтны какие там файлы звуковые и в скетче вроде как будильник есть, но как его настраивать, что то не понл.
 
Изменено:

kym13

★★✩✩✩✩✩
14 Ноя 2020
447
67
@maloir, У меня сегмент на тех что в рамке 1см х 3,5см(цифра получилась 9*5см) , а на других 8мм х 3см. Кстати те что в пластике часы заказал на алиэкспресс самые дешёвые потроха вытащил и вставил ардуино и светодиоды.
 

Вложения

  • 106.6 KB Просмотры: 18
  • 103.3 KB Просмотры: 17

flayer

★✩✩✩✩✩✩
31 Янв 2023
10
12
Добрый день, выдает такую ошибку. версия часов 1.9 ардуино 1.8.5

Clock_1.95_bme_final:484: error: 'RTC' was not declared in this scope

if (Now.Year != year(tm)) RTC.write(Now);
exit status 1
'RTC' was not declared in this scope
 

sashok1958

✩✩✩✩✩✩✩
15 Май 2021
42
5
flayer ,ищите часы пишет ардуино не подходит библиотека часов ,что у ВАС имеется ,либо вы её обновили а не надо было обновлять
 

CNN

✩✩✩✩✩✩✩
13 Фев 2021
12
0
Добрый день. Дабы разгрузить микроконтроллер, возможна ли такая схема подключения адресных светодиодов?Получается независимо от того, сколько светодиодов используется на сегмент скетч один и тот же на 1 светодиод
1698509126340.png