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

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

Комментарии

VANANIDAKI

✩✩✩✩✩✩✩
10 Фев 2021
7
4
Интересная дискуссия, как на счет рассмотреть вариант с модулем wi-fi и корректировкой времени из инета? Может кто-то встречал готовое решение, только рабочее.
 

bort707

★★★★★★✩
21 Сен 2020
3,046
909
как на счет рассмотреть вариант с модулем wi-fi и корректировкой времени из инета? Может кто-то встречал готовое решение, только рабочее.
Вполне реально.
я как-то такое писал.
Делал так - основной код часов на ардуине, а к ней цепляете по УАРТ самый маленький есп8266, например ЕСП-01 , который занимается только синхронизацией времени по сети. Запускаете на нем NTP клиент(примеры есть в сети) и пишете простой протокол обмена, чтобы по команде с ардуины ЕСП отвечал по УАРТ точное время
 
  • Лойс +1
Реакции: maksland

Старик Похабыч

★★★★★★★
14 Авг 2019
4,251
1,297
Москва
@bort707, Вот меня последнее время гложет вопрос:можно ли с есп вытащить вермя АТ командой ? Там точно есть подключене к инету, и вообще достаточно много возможностей
 

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
Всем привет! Допилил себе часы, данные по температуре и влажности выводятся с датчика DHT22. Скетч под любое количество светодиодов.
А в этом скетче отключается не значащий ноль? я имею ввиду 01:30, а показывают 1:30. Функция то есть но она не работает

Держи, вроде рабочий скетч для BME 280
Сделал часы на этом скетче, работают примерно месяц, но " int GetTime" не работает, вместо 1:30 показывают 01:30 и в 132 строке надо местами поменять min с max "min_bright, max_bright" иначе при подключении фоторезистора работает наоборот, когда темно добавляет яркость, когда светло убавляет.
 

начинающий

✩✩✩✩✩✩✩
13 Дек 2020
130
9
Здравствуйте, всем привет! Пришла наконец таки посылка из Китая с лентой и модулями. На "временном картонном макете" соединил отрезки лент (WS2811) в направлении GBAFEDC - CBAFEDC - две точки - GBAFEDC -CBAFEDC (в ws2811 двоеточие выполняется в виде двух отрезков лент с заклеенными лишними с/д черной изолентой) . Подключил питание к ленте. От ленты запитал ардуину. Вход ленты подключил к D13 ардуины. Прошивал ардуину радугой, и переключалкой/моргалкой цветов. Вроде все работает. Вопрос к Уважаемым форумчанам: существует ли окончательно рабочая и рекомендуемая к использованию версия скетча часов под следующую комплектацию: ds3231, ds18b20, bme280, ws2811 ?
 
Изменено:

ASM

★★★★★✩✩
26 Окт 2018
1,599
311
А в этом скетче отключается не значащий ноль? я имею ввиду 01:30, а показывают 1:30. Функция то есть но она не работает
ноль отключается так, если ноль, то отобразить пустой символ, который указан в массиве)
min с max "min_bright, max_bright
это зависит от распайки фоторезистора
@начинающий, думаю не будет сложности переделать) возьми за основу мою)
 
  • Лойс +1
Реакции: Старик Похабыч

начинающий

✩✩✩✩✩✩✩
13 Дек 2020
130
9
ноль отключается так, если ноль, то отобразить пустой символ, который указан в массиве)

это зависит от распайки фоторезистора
@начинающий, думаю не будет сложности переделать) возьми за основу мою)
Привет. Взял бы, какая из из всех Ваших версий наиболее актуальная и допиленная? тем более ранее Вы сообщали: -"Теперь при отвале датчика уличной температуры показывает нуль, ране было '-27 (-127)', надо будет заменить на черточки или может кто предложит иной вариант символов? ..."
 
Изменено:

ASM

★★★★★✩✩
26 Окт 2018
1,599
311
@начинающий, возьми этот вариант) расписал все подробно)
На черточки не менял, предложений не было, значит не осуществимо) а так все работает исправно) править думаю нечего, надо переходить на ESP модуль)
 

Вложения

начинающий

✩✩✩✩✩✩✩
13 Дек 2020
130
9
@начинающий, возьми этот вариант) расписал все подробно)
На черточки не менял, предложений не было, значит не осуществимо) а так все работает исправно) править думаю нечего, надо переходить на ESP модуль)
С П А С И Б О ! ! !
 

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
это зависит от распайки фоторезистора...
Проверял и на модуле фоторезистора (на нем плечо не поменяешь) и на просто связке фоторезистор и резистор менял плечи по барабану пока не поменял min на max
 

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
@начинающий, возьми этот вариант) расписал все подробно)
На черточки не менял, предложений не было, значит не осуществимо) а так все работает исправно) править думаю нечего, надо переходить на ESP модуль)
У Вас есть схема подключения к этому скетчу <ClockStreet3.3.1_final> ? или ссылка на проект
 

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
@начинающий, возьми этот вариант) расписал все подробно)
На черточки не менял, предложений не было, значит не осуществимо) а так все работает исправно) править думаю нечего, надо переходить на ESP модуль)
Вот бы всё тоже самое только вместо BMP280 втулить BME280, BMP280 у меня нет (можно конечно заказать но это долго, да и влажности нет), а вот BME280 у меня запас
 

ASM

★★★★★✩✩
26 Окт 2018
1,599
311
Схемы нет, пока не думал) но сложного ничего нет, гуглите как подключать датчики и смотрите, там только один вариант подключения, контакты А4 и А5. Если нужно дополнительное питание, можно повесить на свободный пин, или вешать на общий, как удобно будет, так и делайте)
Не пугайтесь, если А4 и А5 заняты другими датчиками)
 

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
Схемы нет, пока не думал) но сложного ничего нет, гуглите как подключать датчики и смотрите, там только один вариант подключения, контакты А4 и А5. Если нужно дополнительное питание, можно повесить на свободный пин, или вешать на общий, как удобно будет, так и делайте)
Не пугайтесь, если А4 и А5 заняты другими датчиками)
Уличный датчик как я понимаю 18b20? и если да то резистор между шиной данных и питанием обязателен?
 

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
Этот скетч <ClockStreet3.3.1_final> прямо то что доктор прописал. Хочу маме(в возрасте уже) часы-метеостанцию сделать, чтобы из дома не выходила и всё о погоде знала.:)
 

maksland

★★★✩✩✩✩
13 Янв 2019
512
116
Omsk
esp32 (синхронизация и настройка, можно конечно и на esp8266 ), ds18b20 (улица, дом), BME280 (давление и влажность "опционально") - я "ЗА"
Для создания НАРОДНЫХ часов готов проспонсировать в разумных пределах ! а также протестировать
кнопки можно оставить "опоционально" и меню как Вячеслав_45 организовал
 

PrototypeMinionn

✩✩✩✩✩✩✩
5 Фев 2021
11
0
Всем здравствуйте, появилась проблема, анархично моргают светодиоды,скетч под любое количество светодиодов, проверил на двух Ардуинах, все скетчи работают, кроме этого, помогите разобраться с этой проблемой, пожалуйста
Стабильные 5 в 1.5а
Всего 30 светодиодов
 
Изменено:

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
Привет. Взял бы, какая из из всех Ваших версий наиболее актуальная и допиленная? тем более ранее Вы сообщали: -"Теперь при отвале датчика уличной температуры показывает нуль, ране было '-27 (-127)', надо будет заменить на черточки или может кто предложит иной вариант символов? ..."
Вот скетч проверенный, типа метеостанция на любое количество светодиодов. Только ноль не значащий не отключается
 

Вложения

  • Лойс +1
Реакции: начинающий

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
ноль отключается так, если ноль, то отобразить пустой символ, который указан в массиве)

это зависит от распайки фоторезистора
@начинающий, думаю не будет сложности переделать) возьми за основу мою)
...ноль отключается так, если ноль, то отобразить пустой символ, который указан в массиве)..)) в массиве стоит ноль но после полуночи он не отключается. Вот скетч:
 

Вложения

начинающий

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