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

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

Комментарии

Старик Похабыч

★★★★★★★
14 Авг 2019
4,185
1,280
Москва
@Leon111_09, не совсем понял почему это тогда i2c , а не Onewirre. Если это i2c, то его можно подключить не к любому пину, а к пин А4, получить адрес и работать совместно с тем же LCD, который через адаптер i2c подключен.
 

kym13

★★✩✩✩✩✩
14 Ноя 2020
444
67
@Leon111_09, ....Но китайцы ему цену никак не сложат..... На алике есть совмещенные датчики BMP280+AHT10/20 на одной плате, стоят копейки. Тот же ВМЕ-280 только в разы дешевле.
 

Вложения

  • 69 KB Просмотры: 3
  • 60.8 KB Просмотры: 3
Изменено:
  • Лойс +1
Реакции: Bass70

Leon111_09

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

kym13

★★✩✩✩✩✩
14 Ноя 2020
444
67
@Leon111_09, Прощу прошения, да, Вы правы на счёт АНТ, я другим проектом занимаюсь, а в нём все датчики по умолчанию прописаны, какой есть тот и установил, а система сама определит и подключит, вот и ляпнул не подумавши.
 

Yuri_31

✩✩✩✩✩✩✩
7 Янв 2023
3
0
@Leon111_09,
Спасибо всем откликнувшимся, ничего из предложенного не помогло, оставил так как есть.
 

Bass70

✩✩✩✩✩✩✩
19 Фев 2023
3
0
Спасибо всем откликнувшимся. Заказал сегодня датчики, руки уже чешутся, буду пока циферблат делать.
 

maksland

★★★✩✩✩✩
13 Янв 2019
462
105
Omsk
пытаюсь собрать Clock_1.9_final но ругается на
D:\Users\jn79\Documents\Arduino\Clock_1.9_final\Clock_1.9_final.ino: In function 'void loop()':
Clock_1.9_final:305:6: error: 'RTC' was not declared in this scope
tm = RTC.get(); // Получение времени
^~~
Clock_1.9_final:383:37: error: 'RTC' was not declared in this scope
if (Now.Hour != hour(tm)) RTC.write(Now);
^~~
Clock_1.9_final:389:41: error: 'RTC' was not declared in this scope
if (Now.Minute != minute(tm)) RTC.write(Now);
^~~
Clock_1.9_final:397:10: error: 'RTC' was not declared in this scope
RTC.write(Now);}
^~~
Clock_1.9_final:400:10: error: 'RTC' was not declared in this scope
RTC.write(Now);}
^~~
Clock_1.9_final:407:35: error: 'RTC' was not declared in this scope
if (Now.Day != day(tm)) RTC.write(Now);
^~~
Clock_1.9_final:413:38: error: 'RTC' was not declared in this scope
if (Now.Month != month(tm)) RTC.write(Now);
^~~
Clock_1.9_final:419:37: error: 'RTC' was not declared in this scope
if (Now.Year != year(tm)) RTC.write(Now);
^~~
exit status 1
'RTC' was not declared in this scope
 

ASM

★★★★✩✩✩
26 Окт 2018
1,514
294
@maksland, библиотека RTC_lib не установлена?
Или какая там должна быть.
 

maksland

★★★✩✩✩✩
13 Янв 2019
462
105
Omsk
снёс все билиотеки и ставлю по очереди
RTClib поставил но эта ошибка и с ней и без неё
 

maksland

★★★✩✩✩✩
13 Янв 2019
462
105
Omsk
так вот и не знаю она или не она ?
может какая DS3232RTC нужна ? хотя тоже не помогло :)

DS3232RTC-она ! до 1.2.12 понизил- всё красиво ! буду повышать версию
 
Изменено:

maksland

★★★✩✩✩✩
13 Янв 2019
462
105
Omsk
там непонятно - сразу ругается на отсутствие DS3232RTC - ставлю её и дальше другие требует библиотеки fastled и тд
а потом эта ошибка
в общем 1.3.0 еще компиллируется а 2.0.0 уже ошибка
 
Изменено:
  • Лойс +1
Реакции: Leon111_09

next09

✩✩✩✩✩✩✩
26 Янв 2019
6
0
Здравствуйте ! Есть у кого 3д модель корпуса часов ,для печати на 3д принтере ?
 

maksland

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

maksland

★★★✩✩✩✩
13 Янв 2019
462
105
Omsk
Решил отказаться от сплошного рассеивателя из акрила, теперь из натурального PETG буду печатать и тут свои проблемы.
Кристал видно очень при толщине 0.2 мм, решил поставить теперь 1мм слой. Еще влияет на рассеивание расположение слоев - поворачиваю модель теперь на 45 градусов, чтобы слои были горизонтально-вертикальные. Часы еще от клея не отмывал поэтому такой в разводах вид
 

Вложения

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

maksland

★★★✩✩✩✩
13 Янв 2019
462
105
Omsk
слои не видно, пластик спекается хорошо. Ватманом не вариант, наоборот отхожу от этого
в общем не важно как слои в рассевателях печатаются (прямо или под 45 градусов) вполне нормально получается (1 мм толщина,кристал видно но и засвет всего сегмента более менее равномерный) пластик НИТ белый лунный почти опал :)
 

sashok1958

✩✩✩✩✩✩✩
15 Май 2021
42
5
есть ещё в хозяйственных магазинах матовая подложка из силикона или полуретана 0,5 мм толщиной ,положил 2 штуки и нормально ,размер её 11 формат 420х290
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,185
1,280
Москва
На рассеивание еще влияет расстояние от светодиодов экрана. Внизу лента 60 диодов на метр,2811 или что то вроде этого. 3 диода на чип. Экран обычная бумага А4 , расстояние от диодов до экрана порядка 15 мм. Там где цифры мутнее - бумага не плотно прилегает к шаблону
1683016820029.png
 
  • Лойс +1
Реакции: maksland

maksland

★★★✩✩✩✩
13 Янв 2019
462
105
Omsk
хочется чтобы они как можно тоньше были... хоть плату управления за корпус выноси