ESP, IoT [BigClock] Большие часы на WS2812, ESP8266, Народный мониторинг

Какой вариант датчика используется у вас? Интересно, использует ли кто BME280, как у меня?)

  • BMP280

    Голосов: 26 26.8%
  • BME280

    Голосов: 71 73.2%

  • Всего проголосовало
    97

superflint

✩✩✩✩✩✩✩
14 Авг 2019
34
4
Эх жаль что не на р10 матрицах, а так отличный проект, ищу такой же под матрицы р10, часы, температура и название улицы чтобы выводилось по очереди, так сказать нужна адресная табличка с часами и термометром)
 

ASM

★★★★★✩✩
26 Окт 2018
1,918
422
@superflint, на матрицах смотри ниже) делал уже, но надо обновлять под новую библиотеку)
 
  • Лойс +1
Реакции: superflint

wulf

★✩✩✩✩✩✩
1 Дек 2022
198
27
блин народ есть у ково нить макет часов для печати а то всяких разных дофига а файла не найду блин
 

ASM

★★★★★✩✩
26 Окт 2018
1,918
422
@wulf, какой именно макет?) Тут же каждый под себя размер делал. И под разное количество светодиодов.
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
150
56
Таганрог
forum.wisecomp.ru
@wulf, какой именно макет?) Тут же каждый под себя размер делал. И под разное количество светодиодов.
Помнится,Максланд печатал корпус для часов.Но,правда, в самой первой теме.Там где часы на ардуине делали :).
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
150
56
Таганрог
forum.wisecomp.ru
я печатал на листочке. Потом вырезал и перечерчивал)
Я еще проще сделал: купил декоративную рамку (дешовую) в фикспрайсе,напечатал картину формата А4 и вмонтировал сзади картины ленту.Получилось красиво: картина-часы :).
 

13O13A

✩✩✩✩✩✩✩
15 Фев 2021
13
1
Вот у этого автора неплохие цифры для печати, проверено...
 

AlChel

★✩✩✩✩✩✩
20 Апр 2022
33
12
Победил я автояркость. Промониторил я в порту, у меня нижний порог освещенности определяемый фоторезистором оказался не 0, а 7. Соответственно прописао его сюда
C++:
if (o.min_max) {
          new_bright = map(analogRead(BRI_PIN), 7, 1023, o.min_bright, o.max_bright);  // считать показания с фоторезистора, перевести диапазон
        } else {
          new_bright = map(analogRead(BRI_PIN), 7, 1023, o.max_bright, o.min_bright);
и часы стали полностью выключаться. Но ночной режим надо прикручивать, а то если вечером при выключенном свете решишь посмотреть телевизор, начинается светомузыка :)
Еще сделал округление для показаний датчика температуры, а то часы показывают 22 градуса при фактической 22.98, может кому тоже надо будет
C++:
void TempToArray() {  // вывод температуры с датчика BMP/BME280
  if (DOT_TEMP == 1) {
    leds[NUM_LEDS] = 0x000000;
  }
  FtempH = (bmp280.readTemperature()) + o.cor_tempH;
  tempH = round( FtempH);
  Serial.println((String)tempH + " | " + FtempH);
  Dots(!Dot);
  Digit(digits[11], segment_4);  // символ C
  Digit(digits[10], segment_3);  // символ градуса
  int digit = abs(tempH % 10);
  Digit(digits[digit], segment_2);
  digit = tempH / 10;
  if (digit == 0) Digit(digits[12], segment_1);  // если впереди ноль, то выключаем его
   else
    Digit(digits[digit], segment_1);  // иначе показываем как есть
И еще вопрос, не понял как должна работать функция задержки яркости? У меня по моему вообще не работает
 
  • Лойс +1
Реакции: Leon111_09

ASM

★★★★★✩✩
26 Окт 2018
1,918
422
@AlChel, вроде отлично работает. Указываешь интервал опроса. Каждые "n" секунд будет проверка значений яркости.
 

AlChel

★✩✩✩✩✩✩
20 Апр 2022
33
12
Хм, у меня яркость меняется мгновенно... Опять все не как у людей :)
 

wulf

★✩✩✩✩✩✩
1 Дек 2022
198
27
C++:
// ****************** НАСТРОЙКИ ЧАСОВ *****************
#define MIN_COLOR CRGB::White          // цвет минут
#define HOUR_COLOR CRGB::White         // цвет часов
#define DOT_COLOR CRGB::White          // цвет точек

#define NORMAL_CLOCK_COLOR CRGB::White // Нормальный цвет монохромных цветов

#define CONTRAST_COLOR_1 CRGB::Orange  // контрастный цвет часов
#define CONTRAST_COLOR_2 CRGB::Green   // контрастный цвет часов
#define CONTRAST_COLOR_3 CRGB::Yellow  // контрастный цвет часов

#define HUE_STEP 5          // шаг цвета часов в режиме радужной смены
#define HUE_GAP 30          // шаг цвета между цифрами в режиме радужной смены

// ****************** ДЛЯ РАЗРАБОТЧИКОВ ****************
uint8_t clockHue;

CRGB clockLED[5] = {HOUR_COLOR, HOUR_COLOR, DOT_COLOR, MIN_COLOR, MIN_COLOR};

void clockColor() {

  int8_t color_idx = 0;
// switch (thisMode) {
    case MC_CLOCK:
      // Если режим часов включен как "Ночные часы" - цвет определять по настроенному цвету ночных часов
      // Иначе - цвет часов зависит от режима (Монохром, Каждая цифра свой цвет, Цвет часов-точек-минут" и т.д)
      color_idx = isNightClock ? -2 : COLOR_MODE;
      break;
    case MC_COLORS:
    case MC_FILL_COLOR:
      color_idx = -1;
      break;
    default:
      color_idx = COLOR_MODE;
      break;
  }
   
  if (color_idx == -2) {
    // Цвет по индексу настроек текущего ночного цвета    
    CRGB color = getNightClockColorByIndex(nightClockColor);
    for (uint8_t i = 0; i < 5; i++) clockLED[i] = color;
  } else if (color_idx == -1) {    
    // Инверсный от основного цвет
    CRGB color = globalColor == 0xFFFFFF
      ? color = CRGB::Navy
      : -CRGB(globalColor);
    for (uint8_t i = 0; i < 5; i++) clockLED[i] = color;
  } else if (color_idx == 0) {    
    // Монохромные часы
    uint8_t hue = effectScaleParam[MC_CLOCK];
    CHSV color = hue <= 1 ? CHSV(255, 0, 255): CHSV(hue, 255, 255);
    for (uint8_t i = 0; i < 5; i++) clockLED[i] = color;
  } else if (color_idx == 1) {
    // Каждая цифра своим цветом, плавная смена цвета
    for (uint8_t i = 0; i < 5; i++) clockLED[i] = CHSV(clockHue + HUE_GAP * i, 255, 255);
    clockLED[2] = CHSV(clockHue + 128 + HUE_GAP * 1, 255, 255); // точки делаем другой цвет
  } else if (color_idx == 2) {
    // Часы, точки, минуты своим цветом, плавная смена цвета
    clockLED[0] = CHSV(clockHue + HUE_GAP * 0, 255, 255);
    clockLED[1] = CHSV(clockHue + HUE_GAP * 0, 255, 255);
    clockLED[2] = CHSV(clockHue + 128 + HUE_GAP * 1, 255, 255); // точки делаем другой цвет
    clockLED[3] = CHSV(clockHue + HUE_GAP * 2, 255, 255);
    clockLED[4] = CHSV(clockHue + HUE_GAP * 2, 255, 255);
  } else {
    CRGB color = getGlobalClockColor();
    for (uint8_t i = 0; i < 5; i++) clockLED[i] = color;
  }
}
на сколько понял там вот этот там и отвечает за цвет часов и тп
и файлик с которого выдрал кусок . пробовал заставить его компилироваться но моих познаний в этом очень мало не осиливаю :( ну или как вариант этот фаил прикрутить
 

Вложения

Изменено:

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
150
56
Таганрог
forum.wisecomp.ru
@ASM, За неделю тестирования последней прошивки обнаружился один небольшой баг с авто-яркостью.Сразу после прошивки она не работает.Для запуска надо посветить фонариком в датчик и она запускается.Последние два/три дня в темное время суток она перестает работать. Помогает все тот же фонарик.Со вчерашнего вечера вернул в скетч старый кусок кода,что я выкладывал раньше: авто-яркость пришла в норму.
Из пожеланий: а нельзя включить в прошивку одну кнопку-для "экстренного",внепланового,принудительного показа данных с датчиков?
 

ASM

★★★★★✩✩
26 Окт 2018
1,918
422
@Leon111_09, у меня у самого последняя прошивка стоит. Выше перечисленных проблем нету)) Ночью слабо светит, днем ярко) Свет выключался несколько раз. Пожелания не понял, о чем речь)
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
150
56
Таганрог
forum.wisecomp.ru
Выше перечисленных проблем нету
Эта проблема нерегулярная:бывает,несколько дней нормально работает,а позавчера вечером и ночью яркость была как днем.
Пожелание насчет кнопки: при нажатии выводит температуру,давление,в общем все то,что в настройках.На атмеге это было реализовано на центральной кнопке.
 

Divin

★★★★✩✩✩
30 Янв 2021
459
204
@ASM, они выводятся с некой переодичностью, а хочется по требованию, нажал - узнал.
 

ASM

★★★★★✩✩
26 Окт 2018
1,918
422
@Divin, не понимаю логику, всё показания одновременно не вывести. Если перебирать на каждое нажатие, то по сути тоже самое, что и переключение. Можно поставить минимальное время и будут быстро меняться показания. Если уж так важно, то реализовать сложности нет. В кастом добавить функцию с показом показаниями по старинке через делэй и повесить на кнопку.
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
150
56
Таганрог
forum.wisecomp.ru
Если перебирать на каждое нажатие,
Не надо перебирать.По сути,кнопка будет давать старт показаниям с датчиков.А показывать будет именно те,что уже включены в настройках.Кнопка будет одноразово обнулять таймер отсчета вывода информации.А нужно это бывает для того,что перед выходом из дома надо стоять и ждать чтоб посмотреть температуру на улице :).Это как пример того,зачем ставить кнопку :)
 

ASM

★★★★★✩✩
26 Окт 2018
1,918
422
@Leon111_09, так можно поставить секунды на две, и времени хватает увидеть и быстро, у себя поставил, больше ворчаний не было, что долго ждать) Можно в телефоне смотреть, через нм.

А городить ради этого кнопку...
 

wulf

★✩✩✩✩✩✩
1 Дек 2022
198
27
вот такие у меня получились пока без датчиков еще в дороге
IMG_20230409_002241.jpgIMG_20230409_002336.jpg

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