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

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

Комментарии

Boroda22

★✩✩✩✩✩✩
23 Фев 2022
240
42
а как называется этот режим 😊? там столько кейсов... пока не сально вникал в код, для отладки нужно что-то придумать
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
642
148
55
Таганрог
forum.wisecomp.ru
планирую использовать bt и android
А смысл? Это же часы: один раз настроил и месяцами туда не потыкаешься. А пульт будет валяться, и андроид будет память в смарте занимать.Кнопки проще,дешевле и удобней подключить по вышеописанной причине.
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
642
148
55
Таганрог
forum.wisecomp.ru
кнопками особо не натыкаешься,
Ну потыкаете вы их один/два дня и все. А пульт будет валяться по всей квартире и в конце концов где-то потеряется (по закону подлости- в самый нужный момент). Но это все на ваш выбор :). я себе сделал на кнопках и, поверите, раз настроил и уже несколько месяцев к ним не потыкался (недавно залежи пыли стер с верхней полочки-датчик освещенности стал лучше работать :)).
 
  • Лойс +1
Реакции: Boroda22

Leon111_09

★★★✩✩✩✩
6 Июн 2021
642
148
55
Таганрог
forum.wisecomp.ru
@Boroda22, нормальный вид :). Маленький совет: по торцам светодиодов (по верху и по низу) налейте маленько пластика из термопистолета. Будет свет рассеивать по всей площади сегмента и будет картина четче.А так по краям светодиодов просматриваются темные пятна. Один светодиод на сегмент поставили?
 

Boroda22

★✩✩✩✩✩✩
23 Фев 2022
240
42
Изменено:

Boroda22

★✩✩✩✩✩✩
23 Фев 2022
240
42
@maksland,спрятать можно, но нужно будет перепаивать схему. Сейчас обнаружилась какая-то проблема....При питании от USB, все, кажется работает. А когда от отдельного источника питания (5V/2A), тогда что-то начинаются глюки, перезагружается МК :(
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
642
148
55
Таганрог
forum.wisecomp.ru
когда от отдельного источника питания (5V/2A), тогда что-то начинаются глюки, перезагружается МК
Очень похоже на проблемы с питанием самой платы. Попробуйте подавать питание не на VIN, а на +5V.
При питании от USB
Ленту тоже запитываете оттуда же? Это опасно: можно сжечь встроенный в плату преобразователь- там максимальная нагрузка 500 миллиампер.
 

sashok1958

✩✩✩✩✩✩✩
15 Май 2021
42
5
Boroda22, ищите неисправный светодиод,делается это так ,берёшь и подключаешь от литие-ионной батареи и который светодиод светит слабо или не светит вот тот и неисправный,или неисправный электролит по питанию на плате
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
642
148
55
Таганрог
forum.wisecomp.ru
@sashok1958, Это адресные светодиоды, а не обыкновенные цветные. Тут этот номер не проходит: светодиод будет гореть только тогда, когда будет подана команда на управляющий контакт светодиода. Просто подключением питания эти светодиоды не проверишь.
 
  • Лойс +1
Реакции: Boroda22

sashok1958

✩✩✩✩✩✩✩
15 Май 2021
42
5
У меня работает одинаково от павербанка от 2 амперной зарядки ,если зарядка слабая ,начинают светоды мигать,и умной зарядки 3-19 вольт,делал преобразователь 3,7-5 вольт работает хорошо,готовый брал у Китайцев на 4056 тоже работает

У меня запитка светодиодов стоит с конца ленты ,на каждую цифру повесил электролит 1000 мкф ,6,3 вольта компьютерные ,на входе ленты запитывается сама плата ,на плате тоже стоит электролит 1000 мкф 6,3 вольта и керамика на 10 мкф 10 вольт,сама схема сделана шилдом на голой атмеге 328 дип
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
642
148
55
Таганрог
forum.wisecomp.ru
@sashok1958, От чего питается (аккумулятор или БП) роли не играет.Главное, чтоб приходило нужное питание на ленту и МК. У меня,например,питает БП на 12 вольт и 1А: я вмонтировал в часы понижающий преобразователь и с него настроил выход +5 вольт. Теперь могу подключать практически любой БП в диапазоне от +6 вольт до +12 вольт включительно.
 

sashok1958

✩✩✩✩✩✩✩
15 Май 2021
42
5
Да забыл сказать внизу после восьмёрок у меня стоят ещё бинарные часы на тини 85 и лента 17 светодиодов с частотой 60 светиков на метр

Нету у меня принтера 3D поэтому 1 цифра у меня формируется из 9х7 и закрыта органическим стеклом от старого бокового светильника
 

Boroda22

★✩✩✩✩✩✩
23 Фев 2022
240
42
Собирал вот по такой схеме
ColorClock-sketch_bb.png

@sashok1958,скорее всего дело в питалове, т.к. от шнурка кажется работает нормально, возможно еще в скорости bt, может просаживает ))
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
642
148
55
Таганрог
forum.wisecomp.ru
@Boroda22, Если у вас используется бредборд в схеме, то вполне может быть чисто из-за плохого контакта на нем-у вас питание всех агрегатов запитывается от него. Замените обычной электрической колодкой на два провода и запитайте через нее: должно помочь.
 

Boroda22

★✩✩✩✩✩✩
23 Фев 2022
240
42
@Leon111_09,нее, макетка конечно же не используется, это схема

Очень похоже на проблемы с питанием самой платы. Попробуйте подавать питание не на VIN, а на +5V.
да, тоже грешу на питание. может играет роль подключение часов? именно в этот момент происходит перезагрузка мк. В реальной схеме часы подключены со стороны 6-ти выводов
 

Boroda22

★✩✩✩✩✩✩
23 Фев 2022
240
42
@Leon111_09,подключился от лбп, результат тот же, перезагружается 😭20221117_230833.jpg
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
642
148
55
Таганрог
forum.wisecomp.ru
@Boroda22, монтажную схему проверили? все правильно спаяно? Нигде нет КЗ? Датчик давления случаем не на 3.3 вольта? МБ его на +5 подключили, сгорел и дает кз? Конденсатор по питанию какого номинала?
 

Boroda22

★✩✩✩✩✩✩
23 Фев 2022
240
42
@Boroda22, монтажную схему проверили? все правильно спаяно? Нигде нет КЗ? Датчик давления случаем не на 3.3 вольта? МБ его на +5 подключили, сгорел и дает кз? Конденсатор по питанию какого номинала?
вот это очень интересный вопрос, я использую dht22, его на 3.3 нужно сажать? я просто не пойму, почему от usb не перезагружается, в коде можно накосячить?