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

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

Комментарии

andrey170587

✩✩✩✩✩✩✩
30 Ноя 2021
11
4
@kym13,очень жаль,собрал уже четверо часов и на всех уличная температура не корректно отображается.
 

maloir

★✩✩✩✩✩✩
14 Сен 2019
93
27
@kym13,очень жаль,собрал уже четверо часов и на всех уличная температура не корректно отображается.
а табло какое используете дл часов из чего делаете, можно фото, а то не могу найти как сделать
 

kym13

★★✩✩✩✩✩
14 Ноя 2020
454
67
@qwertya,...как можно убрать мерцание?... Питание нужно стабильное, у себя тоже заметил в темноте мерцают, грешил на код, а потом запитал от ноутбука мерцание пропало, воткнул в другой БП(использую ЗУ от смартфонов) всё норм стало.
 

kym13

★★✩✩✩✩✩
14 Ноя 2020
454
67
@maksland, В версии 1.9 датчики 2 шт. DS18b20 и BMP280, а в 1.95 - 2 шт. DS18b20 и BMЕ280 + DFPlayer(Озвучка), Честно говоря я не разбирался с озвучкой, зачем модуль SD карты если на плеере есть слот для неё? Кто-то на форуме скетч переделанный выложил.
 

Вложения

Изменено:

qwertya

✩✩✩✩✩✩✩
29 Авг 2021
4
0
Привет! часы идут нормально,но заметил если выключить питание например в 15:00 и включить через несколько часов то начинают идти опять с15:00.грешу на модуль часов,а можно поставить вместо ds3231 модуль ds1307?
 

sashok1958

✩✩✩✩✩✩✩
15 Май 2021
42
5
qwertya,только этот модуль 3231 или другая распиновка 3232,остальные не совместимы
 

ASM

★★★★✩✩✩
26 Окт 2018
1,526
296
@qwertya, если новая, то ладно. Если показывает 3В, это ничего не значит, как показывает практика с этими батарейками) Под нагрузкой проседает напряжение) Даже в модулях часов, тоже приходилось менять, были проблемы, хотя напряжение было идеальное)
 

poty

★★★★★★✩
19 Фев 2020
3,047
905
@qwertya, батарейка может показывать что угодно, если она не подключена к микросхеме. Измерять нужно в выключенном состоянии на микросхеме, тогда будет понятно.
 

bort707

★★★★★★✩
21 Сен 2020
2,926
868
.грешу на модуль часов,а можно поставить вместо ds3231
на большинстве продающихся модулей ds3231 ошибка в схеме, если у вас обычная батарейка (не заряжаемая), на модуле надо удалить резистор с обозначением "201" над пином SCL
 

leks1919

✩✩✩✩✩✩✩
5 Янв 2022
3
0
Здравствуйте уважаемые форумчане! Собрал часы со скетчем от "Вячеслав_45" Clock_1.95_bme_final . Очень хорошие часы получились. Увидел скетч доработки с озвучкой от Начинающего , очень прошу выложить аудио файлы озвучки.
 

kym13

★★✩✩✩✩✩
14 Ноя 2020
454
67
@leks1919, Это то что было в оригинале. А он их и не выкладывал здесь, так что все вопросы к "начинающему". У меня есть файлы озвучки: Кукушка, куранты, муж., жен, каминные часы, но их сюда не загрузить, загрузил сюда: https://disk.yandex.kz/d/mYOSYc4CkP5aBQ https://disk.yandex.kz/d/ADvozoHVfgWh1g
 

Вложения

Изменено:

leks1919

✩✩✩✩✩✩✩
5 Янв 2022
3
0
Спасибо огромное "kym 13" но это не то ,мне нужны аудио файлы с прошивки Clock_1.98 от "начинающего" с поста 1,144. Заранее благодарен.
 

начинающий

✩✩✩✩✩✩✩
13 Дек 2020
130
9
Вот все что осталось:

Эта озвучка была нужна ?

Совершенствованием не занимался, с момента создания скетча месяц побаловался и забыл, пока часы работают без озвучки, всех устраивает. Хотел замутить на работе что то на подобии позывных на обед, с обеда, потом прикинул, в шумном цеху это вряд ли будет слышно дальше пяти метров от часов.
 

Вложения

leks1919

✩✩✩✩✩✩✩
5 Янв 2022
3
0
Да, благодарю. Это именно то что мне нужно. Спасибо большое.
 

nick 56

✩✩✩✩✩✩✩
11 Апр 2024
8
2
Здравствуйте. Решил собрать эти замечательные часы. Использовал скетч от Вячеслава 45 . Использовал разные версии, но не проходит проверка компиляции.
Detecting libraries used...
"E:\\Ard 812\\arduino-1.8.12\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10812 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IE:\\Ard 812\\arduino-1.8.12\\hardware\\arduino\\avr\\cores\\arduino" "-IE:\\Ard 812\\arduino-1.8.12\\hardware\\arduino\\avr\\variants\\eightanaloginputs" "C:\\Users\\vkoli\\AppData\\Local\\Temp\\arduino_build_766793\\sketch\\Clock_1.9_final.ino.cpp" -o nul
Alternatives for DS3232RTC.h: [[email protected]]
ResolveLibrary(DS3232RTC.h)
-> candidates: [[email protected]]
"E:\\Ard 812\\arduino-1.8.12\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10812 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IE:\\Ard 812\\arduino-1.8.12\\hardware\\arduino\\avr\\cores\\arduino" "-IE:\\Ard 812\\arduino-1.8.12\\hardware\\arduino\\avr\\variants\\eightanaloginputs" "-IE:\\Ard 812\\arduino-1.8.12\\libraries\\DS3232RTC\\src" "C:\\Users\\vkoli\\AppData\\Local\\Temp\\arduino_build_766793\\sketch\\Clock_1.9_final.ino.cpp" -o nul
Alternatives for TimeLib.h: []
ResolveLibrary(TimeLib.h)
-> candidates: []
In file included from E:\Bolchie clok\45\Clock_1.9_final\Clock_1.9_final.ino:33:0:

E:\Ard 812\arduino-1.8.12\libraries\DS3232RTC\src/DS3232RTC.h:25:10: fatal error: TimeLib.h: No such file or directory

#include <TimeLib.h> // https://github.com/PaulStoffregen/Time

^~~~~~~~~~~

compilation terminated.

Используем библиотеку DS3232RTC версии 1.3.0 из папки: E:\Ard 812\arduino-1.8.12\libraries\DS3232RTC
exit status 1
Ошибка компиляции для платы Arduino Nano.
Вроде ругается на библиотеку DS3232RTC. Пробовал разные скачанные. Не помогает. Что посоветуете?