Большие часы на адресных светодиодах 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
У меня не выходят, этот параметр "#define LIGHT_NIGHT 100 " установил 150,
я выставил в ноль: ставил тоже 150-режим включился около шести вечера. сегодня в 5 утра (как и задумывалось в настройках) обычный режим включился.
 

bort707

★★★★★★✩
21 Сен 2020
3,046
909
строка 317
Чтобы включился ночной режим, должно выполнятся одновременно два услоаия - яркость ниже цифры LIGHT_NIGHT и время в пределах
(Now.Hour <= TIME_NIGHT_END || Now.Hour >= TIME_NIGHT_BEGIN)

Причем время задается только целыми часами и начало ночного режима должно быть строго до полуночи, а конец после
Конец ночного режима отрабатывает на час после установки, если хотите чтобы режим выключился в 7 - задаем в настройках 6.
 

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
Заметил что если этот параметр "#define LIGHT_NIGHT 100 " уменьшить(меньше 100) то часы не переходят в ночной режим. Поставил "180" и ночной режим включился.
 

maksland

★★★✩✩✩✩
13 Янв 2019
513
117
Omsk
в темноте при фиксированном цвете наблюдается подмаргивание другим цветом перед отображением показаний температуры и давления
при нормальной освещенности нормально всё
ставлю цвет голубой то помаргивает зелёным
 
Изменено:

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
maksland
Я вообще отключил функцию анимации при смене минут, тоже иногда подмаргивало.
 

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
bort707 " ..... чтобы режим выключился в 7 - задаем в настройках 6...." Вы были правы, в настройках 8 часов перешли на дневной в 9 часов.
 

Leon111_09

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

maksland

★★★✩✩✩✩
13 Янв 2019
513
117
Omsk
как сильно DS3231 кушает батарею ? на сколько её должно хватать при отключенном основном питании ?
за несколько дней разрядилась одна и на второй уже 2.6в
хотя замеряю потребление и где то пол микрокампера получается
 

начинающий

✩✩✩✩✩✩✩
13 Дек 2020
130
9
Резистор с диодом не отпаивал, в модуле стоит батарейка, модуль воткнут в макетку, туда же воткнута ардуина нано, в первый раз включил в январе этого года, использую для тестинга скетчей часов, с периодичностью где-то раз в месяц подключаю к ленте, подаю питание, часы ище ни разу не сбивались, так что делайте выводы. батарейка вставлена 8 месяцев назад, часы тикают всегда, раз помнят дату и время, внешнее питание подается около раза в месяц не более чем на пол часа.
 

maksland

★★★✩✩✩✩
13 Янв 2019
513
117
Omsk
да и у меня проблем не было, к батарейке был припаян конденсатор на 0.1 (убрал пока), 2 и 3 выводы через 4.7к подтянуты к питанию
ну шина i2c через 4.7к тоже
 
Изменено:

Leon111_09

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

maksland

★★★✩✩✩✩
13 Янв 2019
513
117
Omsk
у меня этих цепей нет и мы на какой то странице это уже обсуждали, батарейкам с цепями заряда плохеет :)
у меня плата разведённая и подключение выводов я озвучил выше
пока нашёл что можно первый вывод вообще отключить и не подтягивать к питанию
третий тоже можно не подключать
 

Геннадий П

★★★★★★✩
14 Апр 2021
1,963
632
44
пока нашёл что можно первый вывод вообще отключить и не подтягивать к питанию
третий тоже можно не подключать
Смотри по даташиту, там есть типовая схема подключения, от нее и отталкивайся.
 

maksland

★★★✩✩✩✩
13 Янв 2019
513
117
Omsk
отпаял с 1 и 3 вывода DS3231SN резисторы, без питания с батарейки жрет 440 мкА, левая микросхема наверное хотя работает
сдул её, нашёл бу и ... даже померять не могу :) но работает !
проблема с жором батареек ушла
 
Изменено:

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
На часы не на радуюсь, поставил в зале. Яркость меняется не просто плавно, а очень плавно.
Вячеслав_45. Спасибо огромное.
 
  • Лойс +1
Реакции: maksland и Leon111_09

maksland

★★★✩✩✩✩
13 Янв 2019
513
117
Omsk
вы слово сразу фоткой подкрепляйте и мы с вами порадуемся ! :)
мне всё никак контроллеры не довезут
Скетч Вячеслава Clock_1.9_final последний ? можно было и до версии 2.0 дотянуть ... Но и за это спасибо, не бросил !