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

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

Комментарии

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
@robarco,
Pin settings for connecting to Arduino:
DS3231: SDA -> A4
SCL -> A5
+5v -> +5v
GND -> GND
BMP280: SDA -> A4
SCL -> A5
+5v -> +5v
GND -> GND

#define DATA_PIN 6 // pin data output to LEDs D6
#define LIGHT_PIN A0 // pin light sensor A0
#define TEMP_1_PIN 10 // pin 1 (DS18b20) The temperature sensor is only positive to tenths D10
#define TEMP_2_PIN 11 // pin 2 (DS18b20) temperature sensor plus and minus up to whole D11
#define PIN_UP 3 // pin add buttons D3
#define PIN_ST 4 // pin selection buttons D4
#define PIN_DW 5 // pin decrease buttons D5
 

Вложения

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

начинающий

✩✩✩✩✩✩✩
13 Дек 2020
130
9
на последних схемах номинал подтягивающего сопротивления у ds18b20 указан как 4,7 Ом, а разве должно быть не 4,7 кОм?
 

robarco

✩✩✩✩✩✩✩
21 Апр 2021
5
2
Может ли кто-нибудь послать код часов 1.9, заархивированный с библиотеками ??
//Can someone send the 1.9 clock code zipped with libraries ?? // Please
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
149
55
Таганрог
forum.wisecomp.ru
это что новая версия ? а давно появилась ?
это финальная версия. вы тему выше читали? буквально пару/тройку постов выше были схемы подключения. и там вкралась ошибка в номиналах (человек просто очепятался).
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
149
55
Таганрог
forum.wisecomp.ru
@Александр Злюс, не поместится-я проверял.вот эти поместятся, но они сильно ограничены в функционале: показывают только время и температуру в комнате(берут со встроенного в DS датчика).
 

Вложения

Изменено:

Leon111_09

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

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
149
55
Таганрог
forum.wisecomp.ru
Ребят,на схеме ошибка подключения датчика БПМ280 по питанию: дело в том, что он идет как в варианте +5В так и в варианте +3,3В. А на схеме он подключается к +5В. Будьте внимательны: можете его сжечь! А лучше любой датчик БПМ подключайте сразу к 3,3В на ардуино: это напряжение у пятивольтового датчика все равно будет в рабочем диапазоне.
 

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
Зависит от датчика, они есть на 5 и 3,3 вольта. На 5 вольтовом стоит стабилизатор на 3,3v(обведен кружком) и согласователь уровней(микросхема рядом со стабилизатором).
 

Вложения

  • 27.4 KB Просмотры: 10
  • 28.7 KB Просмотры: 9
Изменено: