Большие часы на адресных светодиодах 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. Кое-что я перевел для лучшего понимания.

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

Комментарии

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
149
55
Таганрог
forum.wisecomp.ru
Зависит от датчика, они есть на 5 и 3,3 вольта
согласен. просто человек тут один уже сжег датчик из-за неправильного питания. но даже если датчик на +5В то он все равно будет нормально работать если его подключить на 3,3В. я это имел ввиду-гарантированно не сгорит.
 
  • Лойс +1
Реакции: kym13

VANANIDAKI

✩✩✩✩✩✩✩
10 Фев 2021
7
4
@начинающий,
ОГРОМНОЕ тебе человеческое СПАСИБО.
Использовал твой скретч с BME.

Пару лет вынашивал идею, сделать большие часы на кухню, пока не нашел ветку на этом форуме, как-то слабо двигалась мечта.

Саму рамку вырезали на лазернике из 6мм фанеры и накрыл матовым акрилом, причем сам циферблат из двух слоев фанеры, т.е. от диода до акрила 12мм, свет получается более рассеянным, смотрится эффектнее чем с 6мм.
Показания температуры от RTC DS3231 отличается на 2 град. от показаний ВМЕ, кто врет, еще не проверял.
Датчик ВМЕ 3,3 запитал от ардуинки
Фотоэлемент еще не подключил, была задумка прикрутить tsl2561.

По случаю, как отключить вывод даты и показания температуры от RTC DS3231?
 

Вложения

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

maksland

★★★✩✩✩✩
13 Янв 2019
513
117
Omsk
VANANIDAKI это не просто большие, это огромные ! "от диода до акрила 12мм, свет получается более рассеянным " методом экспериментов пришел к 10 мм
а где акрил взяли ? а то мне в городе резали 19 на 6 см за 300 рублей ... дорого :(
 

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
VANANIDAKI
А Вы какой скетч залили? Если от Вячеслава, то там нет вывода температуры с DS3231, а всё остальное отключается в настройках.
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
149
55
Таганрог
forum.wisecomp.ru
По случаю, как отключить вывод даты и показания температуры от RTC DS3231?
дата отключается в настройках часов (без перепрошивки), а температура с RTC DS3231 в этом скетче не используется: два датчика температуры и с BME . как включить и какой есть в шапке скетча в комментариях описана инструкция.
 

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
@VANANIDAKI,
Если цифры были бы с наклоном симпатичнее смотрелось. Это конечно мое видение.
Типа такого.
 

Вложения

  • 43 KB Просмотры: 25

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
@Старик Похабыч,
......размер табло 40см х 18см .....
Мои часы на даче (12соток) на беседке висят с любого места участка видно 😊
Такая метеостанция, очень удобно.
 

VANANIDAKI

✩✩✩✩✩✩✩
10 Фев 2021
7
4
а где акрил взяли ? а то мне в городе резали 19 на 6 см за 300 рублей ... дорого :(
Там где резали фанеру, они сувениры на рекламу режут, я так понял у них есть ассортимент.

А какой размер табло и одного сегмента? А то пишут ...не большие, а огромные...
У меня размер табло 40см х 18см, один сегмент 14см х 7см.
Размер часов 520мм х 225мм. Размер сегмента 100 х 190


@VANANIDAKI,
Если цифры были бы с наклоном симпатичнее смотрелось. Это конечно мое видение.
Типа такого.
Не спорю, возможно, рисовал в corelе, тогда мне углы не понравились.


А Вы какой скетч залили? Если от Вячеслава, то там нет вывода температуры с DS3231, а всё остальное отключается в настройках.
Скретч брал из 740 поста, c BME датчиком.
Поэтому вопрос "как отключить вывод даты и показания температуры от RTC DS3231? " остается открытым



Готовый вариант надеюсь скоро выложу.
 

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
@VANANIDAKI,
В скетче из 740 поста закоментируйте строку 519 и температура с DS3231 не будет выводися.
В скетче же всё расписано строка 519 "TempHomeToArray(); // температура дома с RTC_DS3231
 
  • Лойс +1
Реакции: VANANIDAKI

VANANIDAKI

✩✩✩✩✩✩✩
10 Фев 2021
7
4

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
@VANANIDAKI,
Да, яркость сильная. На своих часах которые на улице висят я ставил мах 100 и мин 4, ночью даже при 4 как ночник работают.
 

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
@maksland,
Часы только весной повесил на даче, так что пока не знаю как зимой себя поведут. Морозы бывают до -25, но не долго средняя температура зимой 8-12 мороза
 

VANANIDAKI

✩✩✩✩✩✩✩
10 Фев 2021
7
4
фотоэлемент разместил в нише между двумя точками, в процессе тестирования все было ОК.
накрыл матовым акрилом, и повесил на стену .... в общем светодиоды засвечивают через акрил фотоэлемент.
Не могу пройти мимо, не добавив умное слово "преломление" :)
 

Вложения

  • 70.8 KB Просмотры: 44

начинающий

✩✩✩✩✩✩✩
13 Дек 2020
130
9
Всем привет. Хочу у себя на работе замутить инфотабло типа " часы, темп в помещ, темп на улице, давление, влажность (на улице бме280), дата, часы..... . так выходит что цех расположен в длинном узком здании, т.е. есть возможность вывески часов где то "почти" в середине коридора , так что бы видели все "обитатели" этого коридора. вопрос вот в чем: если в середине коридора повесить "базовые" часы направленные в одну сторону коридора, а с зади разместить типа "дублирующее табло" т.е. циферблат спаянный из того же типа ленты, по той же схеме, с отдельным питанием, можно ли будет как бы два входа Din двух цыферблатов подключить к ардуине через ОДИН резюк 470 Ом, или лучше на D nn выход ардуины припаять ДВА резюка по 470 Ом, и к противоположным концам резюков подключить Din каждого из "показывающих табло" ?
 
Изменено:

начинающий

✩✩✩✩✩✩✩
13 Дек 2020
130
9
Избыточное цитирование
фотоэлемент разместил в нише между двумя точками, в процессе тестирования все было ОК.
накрыл матовым акрилом, и повесил на стену .... в общем светодиоды засвечивают через акрил фотоэлемент.
Не могу пройти мимо, не добавив умное слово "преломление" :)
думаю, что фоторезистор "не должен" быть в одной плоскости со "светильником", так как отраженный от противоположной стены (стекла) свет так же будет учитываться фоторезистором при определении "текущей освещенности помещения" лентыт.е. попробуйте найти перпендикулирную поверхность по отношении к светодиодам для установки фоторезистора, лучше такую поверхность, на которую менее всего влияет освещенность от светодиодов, и наиболее чувствительную к окружающему освещению.
 
Изменено:

VANANIDAKI

✩✩✩✩✩✩✩
10 Фев 2021
7
4
Избыточное цитирование
Всем привет. Хочу у себя на работе замутить инфотабло типа " часы, темп в помещ, темп на улице, давление, влажность (на улице бме280), дата, часы..... . так выходит что цех расположен в длинном узком здании, т.е. есть возможность вывески часов где то "почти" в середине коридора , так что бы видели все "обитатели" этого коридора. вопрос вот в чем: если в середине коридора повесить "базовые" часы направленные в одну сторону коридора, а с зади разместить типа "дублирующее табло" т.е. циферблат спаянный из того же типа ленты, по той же схеме, с отдельным питанием, можно ли будет как бы два входа Din двух цыферблатов подключить к ардуине через ОДИН резюк 470 Ом, или лучше на Dn выход ардуины припаять ДВА резюка по 470 Ом, и к противоположным концам резюков подключить Din каждого из "показывающих табло" ?
1. Дата - бесполезная штука, не красиво смотрится, и не сразу понятно, что это дата.
2. Если планируется давление, то лучше чтобы между сегментами было одинаковое расстояние, у меня между 2 и 3 сегментом, где две точки расстояние больше.

это я делюсь опытом, не повторяйте :)


На счет запараллелить два табло: логичнее не два сопротивления, а одно, и в два раза меньше, либо два - но параллельно.
Зачем отдельное питание? массы нужно будет соединить.
 

начинающий

✩✩✩✩✩✩✩
13 Дек 2020
130
9
Избыточное цитирование
@начинающий,
Параллельное подключение к тому же выводу , задняя часть будет полностью дублировать переднюю. земля должна быть общей.
про землю в курсе, вопрос в том, что должны ли две ленты быть подключены каждая через свой резистор, либо две ленты можно повесить на один выход дуни через один резистор. ps есть короткое видео работа прототипа "базы" если администрация затребует то могу выложить?
 

начинающий

✩✩✩✩✩✩✩
13 Дек 2020
130
9
Избыточное цитирование
1. Дата - бесполезная штука, не красиво смотрится, и не сразу понятно, что это дата.
2. Если планируется давление, то лучше чтобы между сегментами было одинаковое расстояние, у меня между 2 и 3 сегментом, где две точки расстояние больше.

это я делюсь опытом, не повторяйте :)


На счет запараллелить два табло: логичнее не два сопротивления, а одно, и в два раза меньше, либо два - но параллельно.
Зачем отдельное питание? массы нужно будет соединить.
Ну типа каждое табло состоящее из ...xxx М ленты, сколькото ампер кушает, хотя надо провести опыты, может и действительно одного БП хватит на два табло, возможно Вы правы, впрочем вопрос про то, что можно ли " два циферблата" повесить на один Rout или прилепить к выводу Dout два резистора и к противоположным конацм подключить Din каждого табло?