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

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

  • BMP280

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

    Голосов: 71 73.2%

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

ASM

★★★★★✩✩
26 Окт 2018
1,918
422
берет цвета отсюда ?
если вопрос про вышеперечисленную проблему?)
то все фиксировано и
и запись

этого кода не было
если их нет в списке работать не будет?
таблица нужна для новогоднего режима
Такое впечатление, что земля где то отваливается.
вот у меня тоже эта мысль была, только причина непонятна...
 

wulf

★✩✩✩✩✩✩
1 Дек 2022
198
27
@ASM,я вот и думал что он берет их из таблици
посути должны тогда работать любые цвета из вот такой таблици
2024-02-23_17-50-07.png
 

ASM

★★★★★✩✩
26 Окт 2018
1,918
422
тут меняем цвет по умолчанию, при включении ?
эта часть кода вроде не задействована нигде)
я для плюсовой мне много манипуляций надо сделать - снять часы и отпаять
не надо, работает не как хотелось бы, надо допиливать код, либо что-то другое придумывать, ну или оставить упрощенный вариант на диапазонах, но при пограничном режиме будет заметно мерцание разным цветом)
видать мы первые решились сделать температуру в градиенте)
если искать в гугл, то выдает цветовую температуру (Кельвины).
 

Сотнег

★★★★★★★
15 Янв 2020
4,587
1,552
работает не как хотелось бы
Потому что вы вместо
CRGBPalette256 myPalette = Temperature;
сделали
CRGBPalette16 myPalette = Temperature;

а вместо
ColorFromPalette(myPalette, 128 - tempS *2, 255, NOBLEND)
ColorFromPalette(myPalette, 128 + tempH *2, 255, NOBLEND)
написали
ColorFromPalette(myPalette, 128 - tempS, 255, NOBLEND)
ColorFromPalette(myPalette, 128 + tempH, 255, NOBLEND)

Ну и раз уж я всё равно лезу,
палитру myPalette лучше создавать/объявлять в самой функции void DigitTemp / DigitTempH
- это для экономии памяти,
а запрашивать ColorFromPalette(myPalette лучше перед циклами
- это для ускорения работы кода.
 

ASM

★★★★★✩✩
26 Окт 2018
1,918
422
Потому что вы вместо
CRGBPalette256 myPalette = Temperature;
сделали
CRGBPalette16 myPalette = Temperature;
все правильно у меня)
а вместо
ColorFromPalette(myPalette, 128 - tempS *2, 255, NOBLEND)
ColorFromPalette(myPalette, 128 + tempH *2, 255, NOBLEND)
написали
ColorFromPalette(myPalette, 128 - tempS, 255, NOBLEND)
ColorFromPalette(myPalette, 128 + tempH, 255, NOBLEND)
пришлось, чтобы сдвинуть немного оттенок, иначе не такой был)
можно и так, но памяти свободной полно)
а где цвет по умолчанию меняется ?
раньше так
в пробном uint8_t countLedcolor = 2; из ColorTable
 

wulf

★✩✩✩✩✩✩
1 Дек 2022
198
27
@maloir, ты себе уже сделал такое . просто интересно какая камера судя по цене 0.3 мп
 

wulf

★✩✩✩✩✩✩
1 Дек 2022
198
27
@ASM, кстати хотел спросить да забыл. Сложно будет сделать чтобы уличный датчик перевести на беспроводную передачу с помощью каких-нибудь модулей. Это так как предложение для развития проекта а то не всегда удобно провод его таскать до улици
 

ASM

★★★★★✩✩
26 Окт 2018
1,918
422
@wulf, этот вопрос уже поднимался, либо в этой, либо в общей теме.
Ни к чему он не привел) ds18b20 самый оптимальный вариант)
 

b.a.g.

✩✩✩✩✩✩✩
24 Янв 2021
4
3
дата с точкой мне больше нравится.
IMG_20240225_211641.png
C++:
void DateToArray() {
  Dots(!Dot);
  leds[29] = ledColor;
  int digit = day % 10;
  Digit(digits[digit], segment_2);  // 2 сегмент
  digit = day / 10;
  Digit(digits[digit], segment_1);  // 1 сегмент
  digit = month % 10;
  Digit(digits[digit], segment_4);  // 4 сегмент
  digit = month / 10;
  Digit(digits[digit], segment_3);  // 3 сегмент
}
номер светодиода точки пишем свой.
 
  • Лойс +1
Реакции: maloir

wulf

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

maksland

★★★✩✩✩✩
13 Янв 2019
613
143
Omsk
а отдельно точку доступа поставил для часов, проблем пока нет
изображение_2024-02-27_093816489.png
попробую корпус так распечатать - вначале 2.4 мм молочного пластика, а потом серый
кусок распечатаю и надо посмотреть на взаимное влияние сегментов друг на друга
остались платы часов и если кто хочет то могу выслать (нужно только резистор один поставить, если будете использовать плеер)
и вопрос ASM , вот сейчас вроде цвет от температуры меняется, но это всё совместными советами в коде направил и уже не помню где и что правил :)
Можно еще год прошерстить и вы у себя правки все внесёте в исходном коде, чтобы прошить и проверить всё. "Зафиналить" проект !
 
Изменено:

alex1976

✩✩✩✩✩✩✩
27 Фев 2022
9
0
Здравствуйте, подскажите почему ночной режим часов срабатывает только если выставлен на 0 часов, на любое другое время не срабатывает
 

ASM

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

maksland

★★★✩✩✩✩
13 Янв 2019
613
143
Omsk
вот так
C++:
DEFINE_GRADIENT_PALETTE(Temperature){
  0, 0, 0, 139,                 //DarkBlue
  128 - 30 * 2, 0, 0, 255,      //Blue
  128 - 20 * 2, 30, 144, 255,   //DodgerBlue
  128 - 10 * 2, 0, 191, 255,    //DeepSkyBlue
  128 + 0 * 2, 176, 224, 230,   //PowderBlue
  128 + 10, 238, 232, 170,  //PaleGoldenrod
  128 + 20, 255, 215, 0,    //Gold
  128 + 30, 255, 165, 0,    //Orange
  255, 255, 0, 0
};  //Red

CRGBPalette256 myPalette = Temperature;
 

wulf

★✩✩✩✩✩✩
1 Дек 2022
198
27
@ASM, у меня тоже с 0 уходит а раньше нет 23 не пробовал вроде . вечером потыкаю посижу
 

maksland

★★★✩✩✩✩
13 Янв 2019
613
143
Omsk
@Сотнег,чуть выше посоветовали убрать, чтобы покруче было :)
@ASM,
там так :
C++:
void Dots(boolean Dot_On) {
  for (int i = 0; i < DOTS_NUM; i++) {
    if (clck.new_god) {
      leds[(LEDS_IN_SEGMENT * 14) + i] = (Dot_On) ? ColorTable[rand() % NUM_COLORS - 1] : CRGB(0, 0, 0);
    } else {
      leds[(LEDS_IN_SEGMENT * 14) + i] = (Dot_On) ? ledColor : CRGB(0, 0, 0);
    }
  }
}

//////////// Настройка символов
uint8_t digits[] = {
  // определяем символы для отображения
  // код начинается с 0b0, далее идут 7 цифр, каждая цифра это номер фрагмента, 1 - включен, 0- отключен
  // далее указан получающийся символ и порядковый номер в массиве
  0b00111111,  // Символ 0          0
  0b00100001,  // Символ 1          1
  0b01110110,  // Символ 2          2
  0b01110011,  // Символ 3          3
  0b01101001,  // Символ 4          4
  0b01011011,  // Символ 5          5
  0b01011111,  // Символ 6          6
  0b00110001,  // Символ 7          7
  0b01111111,  // Символ 8          8
  0b01111011,  // Символ 9          9
  0b01111000,  // Символ * градус  10
  0b00011110,  // Символ C         11
  0b00000000,  // Без символа      12
  0b01000000,  // Символ -         13
  0b01111100,  // Символ P         14
  0b01111000,  // Символ % из двух частей 15
  0b01000111   // Символ % из двух частей 16
};
/////////////////////////////////////////////
void Digit(uint8_t digit, uint8_t cursor) {  // функция отображения символов
  for (uint8_t mask = 0b01000000; mask > 0; mask = mask >> 1) {
    for (uint8_t i = 0; i < LEDS_IN_SEGMENT; i++) {
      if (clck.new_god) {
        leds[cursor] = (digit & mask) ? ColorTable[rand() % NUM_COLORS - 1] : CRGB(0, 0, 0);
      } else {
        leds[cursor] = (digit & mask) ? ledColor : CRGB(0, 0, 0);
      }
      cursor++;
    }
  }
}

CRGB temp_color;
void DigitTemp(uint8_t digit, uint8_t cursor) {
  for (uint8_t mask = 0b01000000; mask > 0; mask = mask >> 1) {
    for (uint8_t i = 0; i < LEDS_IN_SEGMENT; i++) {
      byte sum_color;
      sum_color = map(tempS, -50, 50, 212, 10);
      temp_color = CHSV(sum_color, 255, 255);
      leds[cursor] = (digit & mask) ? temp_color : CRGB(0, 0, 0);
      cursor++;
    }
  }
}

void DigitTempH(uint8_t digit, uint8_t cursor) {  // функция отображения символов
  for (uint8_t mask = 0b01000000; mask > 0; mask = mask >> 1) {
    for (uint8_t i = 0; i < LEDS_IN_SEGMENT; i++) {
      if (clck.new_god) {
        leds[cursor] = (digit & mask) ? ColorTable[rand() % NUM_COLORS - 1] : CRGB(0, 0, 0);
      } else {
        leds[cursor] = (digit & mask) ? ColorFromPalette(myPalette, 128 + tempH, 255, NOBLEND) : CRGB(0, 0, 0);
      }
      cursor++;
    }
  }
}