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

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

Комментарии

sashok1958

✩✩✩✩✩✩✩
15 Май 2021
42
5
На алике нашёл в дух местах такие часы большого размера и весом лёгкие,но возможно корпус и качества низкого,я делал по своемому,самодельная плата ардуино с функцией расширения и к ней прилепляются разные модули часов,света ,карты,давления,радиоудлинитель температурного датчика 1820 для улицы,так проще регулировать и смысл делать всё вместе ,если часы огромные и цифры выполнены не на 3d принтере,берёшь рамку из леруа или где-то в другом месте подгоняешь под размер ,вот и выход из положения
 

sashok1958

✩✩✩✩✩✩✩
15 Май 2021
42
5
Приветствую Всех ,Вопрос к Sergo_ST возможно ли корректировать температуру на датчике BMP280 ,а то завышает градуса на три ,либо точно можно только использовать датчики DS18B20 ,а температуру с BMP280 выключать ,ставил DHT11,DHT22 ,такая же байда врут и очень здорово,купил ещё DHT10 ,НО НИ КАКОГО ЭФФЕКТА ,ТОЛЬКО РАБОТАЮТ ЕЩЁ МЕДЛЕННЕЕ
 

Sergo_ST

★★★★★★✩
15 Мар 2020
943
819
@sashok1958, Так в этой прошивке вроде была коррекция температуры бмп, параметр TEMP_BMP_CORRECT.
А вообще по хорошему, датчик температуры нужно максимально удалять от всех греющихся элементов.
 

sashok1958

✩✩✩✩✩✩✩
15 Май 2021
42
5
bort707 ,это я знаю надо вычитать ,а окружающие этого не поймут ,я понял вот здесь надо выверку делать #define TEMP_BMP_CORRECT 0 ,вместо нуля можно целые и не целые числа,а датчик я проектирую наверх корпуса, датчик наружу ds18b20 ,в металлическом корпусе,короче надо помещать в лёд этот bpm как-то и выверять. bme лучше работает
 

bort707

★★★★★★✩
21 Сен 2020
3,046
909
это я знаю надо вычитать ,а окружающие этого не поймут
причем тут "окружающие"? Я вам говорю в коде часов перед выводом значения на экран вычитайте из него свои градусы - показания на часах будут правильными и "окружающие" ничего не заметят
 

sashok1958

✩✩✩✩✩✩✩
15 Май 2021
42
5
Приветствую всех,сегодня засобирался дождь и давление на часах резко упало до 754, датчик BMP-280,хотя часы находятся в помещении,но показывают погоду правильно
 

maksland

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

andrey170587

✩✩✩✩✩✩✩
30 Ноя 2021
11
4
Всем привет, парни помогите вкорячить в 1,9 bmp, отдельно датчик влажности AHT20
 

maksland

★★★✩✩✩✩
13 Янв 2019
513
117
Omsk
терпите, идут платы на параллельный проект, там будет всё ! А тут всё... заглохло. Кстати в 1.9 есть поддержка bmp, влажности только нет (есть в ветке версия 1.95, там bme c влажностью )
 
Изменено:

Boroda22

★✩✩✩✩✩✩
23 Фев 2022
251
42
@maksland,а можно поинтересоваться, что за параллельный проект? на esp который?
 

maksland

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

Вложения

Изменено:

maksland

★★★✩✩✩✩
13 Янв 2019
513
117
Omsk
ну это дорого будет думаю, больше 30 см длина
а так я думал в свое время сделать плату часов на другой стороне сегмента, те каждый сегмент часами может стать - универсальная плата
но сейчас думаю лучше так, по отдельности
 

sashok1958

✩✩✩✩✩✩✩
15 Май 2021
42
5
как говорит maksland,лучше заказать 12 штук восьмёрок и они пригодятся и как раз укладываешься в количество заказа,одна здоровая плата дорого стоит и плюс её не одну надо заказывать и надо делать лучше на тонком текстолите , я сделал 8х8 ,то есть сегмент восьмёрки делю на 4+4 с небольшим зазором,светодиоды использую 144 на метр ,использую матовое стекло от дневного света 4 по 40 ватт так, как нету принтера ,закрываю им ,либо можно использовать из вальдбериса матовую подложку за 327 руб 4 штуки ,размером 40х25
 

maksland

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

Вложения

Изменено:
  • Лойс +1
Реакции: F1971, Leon111_09 и Divin

gloin37

✩✩✩✩✩✩✩
10 Дек 2020
1
0
При заливке скетча ошибка
'RTC' was not declared in this scope
строка RTC.read(NOW); библиотеки подключены.Посоветуйте как исправить!
 

Вложения

Boroda22

★✩✩✩✩✩✩
23 Фев 2022
251
42
Ребята, киньте пожалуйста ссылку на последнюю актуальную рабочую версию :) ?
 

Boroda22

★✩✩✩✩✩✩
23 Фев 2022
251
42
Залил прошивку, сначала загорелись сегменты красным, потом началась радуга. Это режим такой? Кнопки я не подключал, планирую использовать bt и android
 

Вложения

Leon111_09

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

Вложения

Изменено: