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

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

Комментарии

suhorukov-p

✩✩✩✩✩✩✩
16 Фев 2019
47
6
Вячеслав_45 : Собрал часы по вашей схеме, и прошил, всё работает!!! Только пока отрицательную температуру не проверил, но зима уже близко )))
9. (-t) включение отображения минусовой температуры 0-1, я так понимаю 0 это выкл, а 1 это вкл.
Прошивал usbasp программатором, в AVRDUDEPROG
3333.jpg
444.jpg
 
Изменено:
  • Лойс +1
Реакции: Вячеслав_45

Вячеслав_45

★★✩✩✩✩✩
10 Июл 2020
72
64
По -t верно. Я проверял, положил датчик между 2 кусков замороженного мяса, все показывало, у меня датчик выносной сделан, т.к. в нутри корпуса тепло
 
  • Лойс +1
Реакции: suhorukov-p

maksland

★★★✩✩✩✩
13 Янв 2019
463
105
Omsk
нарисовал плату (но еще не проверял), без DCDC можно до 30*55мм ужать
хочу сегменты поинтереснее найти, классика это конечно хорошо но хочется чего нибудь менее строгого
 

Вложения

Вячеслав_45

★★✩✩✩✩✩
10 Июл 2020
72
64
нарисовал плату (но еще не проверял), без DCDC можно до 30*55мм ужать
хочу сегменты поинтереснее найти, классика это конечно хорошо но хочется чего нибудь менее строгого
А какого плана поинтереснее. Я например делал под наклоном в 5 градусов, уже интереснее смотрится чем прямые, пробовал 10 градусов это уже слишком а 5 норм. Можно конечно заморочиться и сделать 16 сегментов.
 

suhorukov-p

✩✩✩✩✩✩✩
16 Фев 2019
47
6
я лично прямые и наклонные цифры поставили на рассмотрение ребятам, как ни странно, но выбрали прямые цифры.0c1195e4-a99e-4994-8be8-4a2322e925b6.jpgcc16e311-b3de-4046-96fe-9f7a8bc21b6f.jpg
 

Вложения

Изменено:

maksland

★★★✩✩✩✩
13 Янв 2019
463
105
Omsk
уговорили :)
с двумя светиками на сегмент я делал с таким корпусом https://www.tinkercad.com/things/9ZOF8SCmye0 (на каждый разряд плата и контроллер PIC)
матированный акрил в качестве светорассеивателя
 

suhorukov-p

✩✩✩✩✩✩✩
16 Фев 2019
47
6
Пластик похож на ПВХ, мне старые таблички отдали, я с них и делал 3D корпус)))))) Кстати рисунок на картинке можно убрать, это просто наклейка ))))
4ac786dd-0abd-4bb2-abfa-a73c9ae70f4d.jpg
 
Изменено:
  • Лойс +1
Реакции: Вячеслав_45

Вячеслав_45

★★✩✩✩✩✩
10 Июл 2020
72
64
Пластик похож на ПВХ, мне старые таблички отдали, я с них и делал 3D корпус))))))Посмотреть вложение 15445
Капец скока времени я тупил, у меня на работе таких полно, а я все искал с чего делать. Спасибо за подсказку. Клей Момент их не растворяет?
 

maksland

★★★✩✩✩✩
13 Янв 2019
463
105
Omsk
суперклеем нормально клеит (еще содой посыпать можно). корпуса простых судомоделей из него делают
с 3D принтером конечно намного проще всё сделать на если нет то этот пластик лучший вариант наверное будет
 
Изменено:

suhorukov-p

✩✩✩✩✩✩✩
16 Фев 2019
47
6
Клей Момент "Кристалл" прозрачный клей, склеивает на ура. главное смазывать 2 части, потом немного подождать чтоб подсохло и соединить крепко прижав. и усё!!! я так все часы склеил, а суперклея нужно много и он быстро схватывает. а момент самое то.46051dd3-2bcf-46b4-bdea-ef8cd72437e4.jpg
 

maksland

★★★✩✩✩✩
13 Янв 2019
463
105
Omsk
запустилось только малость на плате вывода попутал :)
 
Изменено:

razwal

✩✩✩✩✩✩✩
20 Янв 2020
22
3
новая версия прошивки часов
Отличная прошивка , всё отлично работает , очень удобно заливать прошивку через Xloader (никакой возни с библиотеками ). Если будете развивать Ваш проект дальше , то хотелось бы иметь возможность выбрать другой цвет для вывода температуры , возможность отключать эффект анимации при смене минут , ну и возможность выбора количества светодиодов в сегменте (собирал на ленте ws2811 в ней 3 светодиода на сегмент , но хотелось бы больше ).
 

shocker

✩✩✩✩✩✩✩
22 Окт 2019
3
0
привет всем .я сделал часы по твоим схемам ,корпус я сделал от компьютерного монитора ,по моему мнению самый удачный вариант без 3D принтера .часы работают хорошо ,но есть нюансы по прошивке,у меня отображение температуры от бме 280 еще хочу добавить 1 датчик ds18b20 для отображения температуры на улицу с отрицательными значениями ?прошу помощи о дописании
 

Вячеслав_45

★★✩✩✩✩✩
10 Июл 2020
72
64
Отличная прошивка , всё отлично работает , очень удобно заливать прошивку через Xloader (никакой возни с библиотеками ). Если будете развивать Ваш проект дальше , то хотелось бы иметь возможность выбрать другой цвет для вывода температуры , возможность отключать эффект анимации при смене минут , ну и возможность выбора количества светодиодов в сегменте (собирал на ленте ws2811 в ней 3 светодиода на сегмент , но хотелось бы больше ).
Над цветом и анимацией подумаем. Про количество светиков на сегмент пока проверить негде

привет всем .я сделал часы по твоим схемам ,корпус я сделал от компьютерного монитора ,по моему мнению самый удачный вариант без 3D принтера .часы работают хорошо ,но есть нюансы по прошивке,у меня отображение температуры от бме 280 еще хочу добавить 1 датчик ds18b20 для отображения температуры на улицу с отрицательными значениями ?прошу помощи о дописании
С бме 280 не работал и в наличии такого нет а ds18b20 отрицательную отображает в версии 1.5
 

razwal

✩✩✩✩✩✩✩
20 Янв 2020
22
3
Над цветом и анимацией подумаем. Про количество светиков на сегмент пока проверить негде
Это отлично , буду ждать.
И ещё такой вопрос , ну или скорее рассуждение , у Вас в прошивке есть настройки времени отображения температуры и даты , так вот , можно еще добавить такую же настройку и для отображения времени , а то получается если время отображение температуры , например 5 секунд , то этого отображения нужно ждать почти минуту , а это долго .А так можно было бы сделать ,например , чтобы 5 секунд отображались часы , 3 секунды температура (ну и кому нужно дата) , т.е. если я посмотрел на часы и хочу знать показания температуры , то ждать нужно всего максимум 5 секунд . Я повторюсь , что это просто рассуждение , и я далек от написания программ , возможно это сложно .
 

suhorukov-p

✩✩✩✩✩✩✩
16 Фев 2019
47
6
подправил дорожки для односторонней платы, после проверки буду делать плату
Дружище!!! А можешь расписать маркировку в плате, а то открываешь и начинаешь её изучать, и ты её для проекта Вячеслав_45 нарисовал, или это от твоего проекта?
 

maksland

★★★✩✩✩✩
13 Янв 2019
463
105
Omsk
забегался я на работе :( отпуск, больничный, без содержание беру - везде находят :(
плату как надо оформлю и добавлю
то что выше добавил это как макет и да, для проекта Вячеслав_45`a
P.S.
посмотрел плату -почти все номиналы есть же, DCDC только не подписан
 
Изменено:

suhorukov-p

✩✩✩✩✩✩✩
16 Фев 2019
47
6
забегался я на работе :( отпуск, больничный, без содержание беру - везде находят :(
плату как надо оформлю и добавлю
то что выше добавил это как макет и да, для проекта Вячеслав_45`a
P.S.
посмотрел плату -почти все номиналы есть же, DCDC только не подписан
Спасибо (y) (y) (y) , Разобрался
 

maksland

★★★✩✩✩✩
13 Янв 2019
463
105
Omsk
подписал номиналы, индикацию на отдельной плате хочу развести, потом сегменты напечатанные толщиной 8-10 мм и матированное оргстекло - проверенный рецепт !.
7segment.zip - так разводил платы под разряды с двумя светодиодами на сегмент (другой проект, на PIC)
я вот подумал... может температуру да и дату как нибудь цветом выделять ? вот эффект каждой минуты красивый и может так температуру оформить ?

делаю корпус пока
 

Вложения

Изменено:
  • Лойс +1
Реакции: suhorukov-p