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

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

Комментарии

maksland

★★★✩✩✩✩
13 Янв 2019
513
117
Omsk
странно, часы поработали и меню восстановилось а глюки начинались с выбора цвета - там значение шестнадцатеричное и остальные пункты без параметров
сейчас раз 5 сделал "----" и восстановилось меню
Leon111_09, "если отключить оба датчика температуры " отключить в меню ?
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
149
55
Таганрог
forum.wisecomp.ru
сегодня пришел датчик DS18B20. подкинул по быстрому (для проверки) его к часам,поставил подтяжку на 4.5Ком. все работает. я,довольный как слон, вывожу датчик на улицу-он перестал работать. что только не делал-не работает и все. перегуглил инет-ничего не помогает. расстроился ппц. а потом стукнуло в голову что резистор ставится на 4.7Ком. дай думаю попробую сменить подтяжку. поставил на 10Ком и вуаля-датчик заработал как надо.
 
  • Лойс +1
Реакции: начинающий

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
149
55
Таганрог
forum.wisecomp.ru
проблема в чем-то другом
думаю,скорее всего сопротивление датчика и подтяжки было очень близки по значению. это и была причина неисправности. поставил бОльшее сопротивление на подтяжку и все заработало.
 

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
@ShopeR,
Это готовые часы(кстати не плохие, дата,температура, день-ночь) на алике покупал. Китайские потроха вынул, а свои(тоже китайские) вставил.
 
Изменено:

maksland

★★★✩✩✩✩
13 Янв 2019
513
117
Omsk
я такие похожие делал но в погоне за толщиной... недоборщил (но еще не всё потеряно), а так неплохой настенно-настольный вариант
а потроха какие поставили ? своя плата но сделанная в Китае ? в родных RGB светодиоды стояли ?
 
Изменено:

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
@maksland,
В родных стояли диоды зеленого цвета, свои потроха это: Nano, DS1307, DS18b20(модуль), фоторезистор модулем и кнопки. В корпусе сделал отверстие под USB разъём нанки, так что можно перепрошить не разбирая. DS18b20 вынесен наружу сзади. Всё влезло даже ещё место осталось. Крепил на термоклей.
 
Изменено:

maksland

★★★✩✩✩✩
13 Янв 2019
513
117
Omsk
тю... даже один цвет, замена потрошков нужна была обязательна !
не могу заставить делать на отдельных модулях, хочется чтобы и внутри было хорошо как и снаружи
поэтому и делаю на одной плате всё
один хороший человек делает альтернативную прошивку для беспроводного датчика температуры но я нарвался на паленные attiny13 (хотя шьются и читаются без проблем ) поэтому жду контроллеры из города и пока заморожена сборка корпуса. Думаю как питание на часы подать на расстояние 6 метров (не 230в )
и еще - преобразователь собран на XL1509 (2А) 48 светодиодов вытянет в аварийном режиме или ставить предохранитель на ампера 2?
 

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
@maksland,
48х0,06А=2,8А это при условии если все будут гореть белым и на полную яркость. У меня часы на матрице ws2812 8*32 (256шт диодов) при 40% яркости потребляют в зависимости от цвета 0,33 до 0,9А. Использую для питания зарядку от смартфона 2 амперную.
 

maksland

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

bort707

★★★★★★✩
21 Сен 2020
3,046
909
Думаю как питание на часы подать на расстояние 6 метров (не 230в )
на расстояние 6м лучше подавать именно 230в, ток в 20 раз меньше, потери соответственно.
А преобразователь ставить непосредсвенно около часов
 

Leon111_09

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

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
Они пока без корпуса, солнце сильно отсвечивает, в TV отражение видно, через тонировочную пленку более менее видно.
 

Вложения

  • Лойс +1
Реакции: maksland

bort707

★★★★★★✩
21 Сен 2020
3,046
909
я думал подавать 12v по 1.5 квадрату а dcdc встроен в часы
Нелогично, один бп 220- 12в у розетки, другой 12 ->5в в часах. Почему не сразу 220 - 5в в часах?
А провода для 230в хватит и 2х0.5 - а это тоненький кабелек, гибкий, его очень легко спрятать.
 

maksland

★★★✩✩✩✩
13 Янв 2019
513
117
Omsk
нежелательно 220 пробрасывать в том месте а 12 вольт прямо в часы будут заводится
особо частный случай так сказать
 

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
@maksland,
У меня часы (86 LED, 2 на сегмент) запитаны обычным 4-х жильным телефонным проводом от обычной зарядки для смартфона, длина провода 5 метров. На фото (часы на верху) белый между шкафом и холодильником(излишки провода за холодильник спрятал). Работает без проблем. Там сечение наверное 0,25

я думал подавать 12v по 1.5 квадрату ...... 1,5 квадрата медного провода это 19 Ампер и 4,1 квт при 220 вольт
 

Вложения

Изменено: