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

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

Комментарии

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
@Sergo_ST,
....могу посоветовать тоже .... Теперь только весной😏
Сегодня был на даче, температура +6, часы всё показывают(влажность, давление, температуру) отсюда вывод Leon111_09 правильно говорил что в скетче только один датчик для уличной температуры DS18b20, а ВМЕ280 при отрицательных температурах не работает(не отправляет данные). Значит надо править скетч, железо ни причём.
 
Изменено:

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
149
55
Таганрог
forum.wisecomp.ru
@kym13, Скорее всего balent не тот датчик за окно выкинул.Он скорее всего комнатный выкинул, а он отрицательные не показывает: минус забит в скетче только на один датчик.
 
  • Лойс +1
Реакции: kym13

balent

✩✩✩✩✩✩✩
29 Ноя 2021
53
7
@Leon111_09,С утра пошутить-это хорошо. Что куда выкинул вверху указано, вот который забит, тот и за окном. Датчик менял на исправный, с рабочего девайса.
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
149
55
Таганрог
forum.wisecomp.ru
Что куда выкинул вверху указано, вот который забит, тот и за окном.
Вы не поняли. Это в скетче надо на 10-й пин (если не изменяет память-см. комменты в скетче) сажать датчик за окном. На 11-м пине идет комнатный датчик (оба они ДС-ки,только один выводит значения целыми числами и со знаком минус, а второй выводит дробные и без минуса).
 

balent

✩✩✩✩✩✩✩
29 Ноя 2021
53
7
@Leon111_09, Всеее прааавильно устаноооовлено и подклююючено ( в скетче комменты читаем). Вот сейчас по рекомендации Sergo_ST "идет полет" с обновленной библиотекой, пока good.

@Sergo_ST, Спасибо за помощь, обновил V3.5 за бортом -10, комната +22. все нормально показывает.
 
Изменено:

maksland

★★★✩✩✩✩
13 Янв 2019
513
117
Omsk
тоже с такой проблемой столкнулся пока не обновил библиотеку
 

Advent

✩✩✩✩✩✩✩
21 Июн 2020
5
2
Может есть энтузиасты которым будет интересно доработать данный проект на управление от пульта так как бывает что часы высоко висят и не удобно их настраивать кнопками
 
  • Лойс +1
Реакции: kym13

Advent

✩✩✩✩✩✩✩
21 Июн 2020
5
2
@Leon111_09, буду признателен за ссылку
так как я находил подобные проекты но мне не нравились как они работали
Хотелось бы чтобы функционал был такой же как в прошивке 1.9 Вячеслава_45
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
149
55
Таганрог
forum.wisecomp.ru
буду признателен за ссылку
да это еще на первых двух/трех страницах (я уже не помню на какой,но я по тому проекту делал сыну часы).
Да,функционал там минимален: только часы и температура с модуля часов. А насчет прошивки Вячеслава-так это к нему :).
 

balent

✩✩✩✩✩✩✩
29 Ноя 2021
53
7
@Advent, из практики пульт, батарейка-гемор. Если модуль довольно точный, настроил один раз и радуйся. 21,12 как установил, до сих пор радуют, ну иногда цвет надоедает, встал на табурет, нажал и дальше. Другие на ESP ( не на WS2812) больше года назад включил, и по сей день, время точно, погода -так себе.
 

bort707

★★★★★★✩
21 Сен 2020
3,046
909
вместо пульта лучше веб-интерфейс через вай-фай, чтобы с телефона настраивать
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
149
55
Таганрог
forum.wisecomp.ru
для этого ставим есп-01 за 100 рублей
тогда уж проще сразу на есп8266 делать. Только смысл? Раз сделал и забыл.У меня часы висят хоть и не высоко,но в настройки уже месяца три не лазил :)
 

bort707

★★★★★★✩
21 Сен 2020
3,046
909
Только смысл? Раз сделал и забыл.
это другой вопрос. Раз человек хочет пульт - значит ему нужны какие-то настройки :)

Я себе собирал часы вообще без единой кнопки, время через NTP, яркость с датчика, остальное в коде
 
  • Лойс +1
Реакции: Leon111_09

ASM

★★★★★✩✩
26 Окт 2018
1,602
311
@Leon111_09,бери полноценную версию, NodeMCU, если полноценно переходить планируешь...
 

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
@Leon111_09,
....неправильно переделали под диоды 2812 86 штук.
Этот код под ленту WS2811 (28 отрезков по 3 Led + 2 Led WS2812 точки) это и есть 86 LED физических,
но WS2811 управляет 3-мя LED одновременно!!!! Если вместо 2811 ставить 2812 то код нужно конкретно править.
.... там нет автоматической установки диодов в сегменте ..... Вот это я и имел ввиду, в массиве вывода на диоды очень много править нужно.
 
Изменено:

ASM

★★★★★✩✩
26 Окт 2018
1,602
311
Надо на наши последние готовые проекты вынести в шапку ссылки на посты)
Вот этот вроде мой последний, потом ушел на ESP
отправил на модерацию этот запрос
 
Изменено:
  • Лойс +1
Реакции: Leon111_09 и navangel

navangel

✩✩✩✩✩✩✩
11 Янв 2022
13
1
@Leon111_09, сегодня закончил перепаивать диоды. прошил скетч от Вячеслава и все заработало с первого раза. единственное что пришлось сделать это датчик на 11 пин припаять и кнопки управляющие переместить (до этого были на 2,3,4 пинах) rtc не трогал и библиотека та что в скетче подошла. Теперь что-то с корпусом придумать. Спасибо за подсказки.
 
  • Лойс +1
Реакции: kym13

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
149
55
Таганрог
forum.wisecomp.ru
его и нельзя трогать: он на А4 и А5. Кстати,на модуле ртс два комплекта пинов. На второй можно подключить в параллель датчик давления (только внимательно с +5 вольт:они есть и на 3,3. Если на 3,3 вольта,то плюсовой напрямую на атмегу надо сажать).

Теперь что-то с корпусом придумать.
Я свои часы вмонтировал в корпус от фоторамки формата А4: хорошие часы-картина получились ( у меня 2 пикселя на сегмент). Если у вас пикселизация больше то можно поискать (например в леонардо) рамку побольше.
 
  • Лойс +1
Реакции: navangel