ESP, IoT WiFi лампа-будильник. Обсуждение прошивки от GUNNER47

ЗДЕСЬ ОБСУЖДАЕМ ТОЛЬКО ДАННУЮ ПРОШИВКУ
ВСЕ ЧТО НЕ ПО СИЯ ТЕМЕ И ПРОШИВКЕ, ВСЕ СНОСИТСЯ НА@@@!

Очень просим не делать репост "ЦИТИРОВАНИЕ" сообщений! Делать только в КРАЙНЕЙ необходимости, удаляя лишний текст (у нас не ЧАТ)!
Иначе опять будет 160 страниц и 0 пользы ....

Для ответа КОНКРЕТНОМУ пользователю, достаточно нажать " ОТВЕТ"

При описании проблемы обязательно, как можно подробнее, описывайте ход своих действий до ее возникновения. Телепатов (как я думаю) среди участников нет. Потом 20 постов будет только для того, чтобы Вас понять.
Если Вы считаете ваше сообщение важным и его нужно поднять в шапку, пишите мне в личку с пометкой "Сообщение в шапку"


ПО ВОПРОСАМ РАБОТЫ ПРИЛОЖЕНИЯ ОТ KOTEYKA ИДЕМ В ЭТУ ТЕМУ

Голосовое управление лампой Гайвера, через Яндекс Алису (прошивка Gunner47).

Яндекс диск Файл ПДФ. Актуально на 27.01.2020г
наш сервер НЕ ОБНОВЛЯЕТСЯ, от 27.01.2020г
Прошивка gunner47 v.2 "86 эффектов в 1" или уже больше - разработку ведет @Сотнег
Прошивка gunner47 v.2.X_web : веб-интерфейс (без необходимости перепрошивки) - разработку ведет @alvikskor
Прошивка от Shaitan с поддержкой mp3 и пульта (тут не обсуждается. Обсуждается в теме прошивки)
Прошивка FireLamp with Remote Control - разработку ведет @SlingMaster

Для тех у кого умный дом Home Assistant есть отличный компонент

ВНИМАНИЕ! Если у вас не компилируется или не загружается скетч - значит вы сделали что-то неправильно. Специально для вас созданы две темы:
ESP8266, проблема с компиляцией скетча
ESP8266, проблема с загрузкой скетча
Читайте (ЧИТАЙТЕ! Не пишите!) эти темы, там уже есть решение вашей проблемы.
Здесь подобные вопросы считаются оффтопом и молча удаляются, а авторы получают баллы нарушений.
 
Изменено:

Комментарии

mechanic

★★★★✩✩✩
Команда форума
31 Июл 2018
403
206
ЗДЕСЬ ОБСУЖДАЕМ ТОЛЬКО ДАННУЮ ПРОШИВКУ
ВСЕ ЧТО НЕ ПО СИЯ ТЕМЕ И ПРОШИВКЕ, ВСЕ СНОСИТСЯ НА@@@!

Очень просим не делать репост "ЦИТИРОВАНИЕ" сообщений! Делать только в КРАЙНЕЙ необходимости, удаляя лишний текст (у нас не ЧАТ)!
Иначе опять будет 160 страниц и 0 пользы ....

Для ответа КОНКРЕТНОМУ пользователю, достаточно нажать " ОТВЕТ"

При описании проблемы обязательно, как можно подробнее, описывайте ход своих действий до ее возникновения. Телепатов (как я думаю) среди участников нет. Потом 20 постов будет только для того, чтобы Вас понять.
Если Вы считаете ваше сообщение важным и его нужно поднять в шапку, пишите мне в личку с пометкой "Сообщение в шапку"


ПО ВОПРОСАМ РАБОТЫ ПРИЛОЖЕНИЯ ОТ KOTEYKA ИДЕМ В ЭТУ ТЕМУ

Голосовое управление лампой Гайвера, через Яндекс Алису (прошивка Gunner47).

Яндекс диск Файл ПДФ. Актуально на 27.01.2020г
наш сервер НЕ ОБНОВЛЯЕТСЯ, от 27.01.2020г
Прошивка gunner47 v.2 "86 эффектов в 1" или уже больше - разработку ведет @Сотнег
Прошивка gunner47 v.2.X_web : веб-интерфейс (без необходимости перепрошивки) - разработку ведет @alvikskor
Прошивка от Shaitan с поддержкой mp3 и пульта (тут не обсуждается. Обсуждается в теме прошивки)
Прошивка FireLamp with Remote Control - разработку ведет @SlingMaster

Для тех у кого умный дом Home Assistant есть отличный компонент

ВНИМАНИЕ! Если у вас не компилируется или не загружается скетч - значит вы сделали что-то неправильно. Специально для вас созданы две темы:
ESP8266, проблема с компиляцией скетча
ESP8266, проблема с загрузкой скетча
Читайте (ЧИТАЙТЕ! Не пишите!) эти темы, там уже есть решение вашей проблемы.
Здесь подобные вопросы считаются оффтопом и молча удаляются, а авторы получают баллы нарушений.
 
Изменено:

George

★★✩✩✩✩✩
25 Дек 2019
372
58
Неужели кроме меня этого никто не видит, или тут слишком медленная матрица? Какая FPS у этого экрана, кто-нибудь в курсе?
У нас программно-аппаратная штуковина. Матрицы разные, их как минимум 5 видов. Количество диодов тоже не одинаковое. Модули контроллеров тоже разные. Кварцы на них тоже разные. Отсюда и тайминги отличаются.

Я поэтому просил программистов набросать код для измерения цикла (таймингов) на каждый эффект. Тогда можно было бы записать каждому пользователю свои константы, вычислив корректный диапазон именно для его устройства. Хорошо, что есть ручная регулировка скорости и масштаба.
 

Palpalych

★★★★★✩✩
24 Дек 2019
766
405
@George, там нет таймингов. Все вращается в одном цикле. Задержку на отображение кадров делает регулятор скорости - от 1 до 255 мс
среднее время обработки 1 кадра 3-4мс (эффект огонь моей модификации)
7,7 мс занимает вывод информации на матрицу 16х16 (800000 / 24 / 256) ~ 130fps
 

tolyan23

✩✩✩✩✩✩✩
2 Янв 2020
21
8
@Сотнег,
@tolyan23, Лава и Плазма - это один и тот же эффект в разных цветах.
Выглядят они по плавности абсолютно одинаково.
Да просто на разных скоростях смотрел.
А какая у вас матрица (светодиодная)? Какая прошивка?
/QUOTE]
GyverLamp_v1.4 матрица 16*16 "стандартная" контроллер такой же как в видео гайвера D1 mini
@tolyan23 , библиотека FastLED у вас какой версии?
Такая как выложена на сайте Версия прошивки от @gunner47:
https://github.com/gunner47/GyverLamp
Насколько я понял 3.1

Кажется я понял мне доступны слишком широкие настройки при неверном выборе которых эффекты смотрятся отвратительно
То же звездопад на высоких скоростях очень хорош, на низких не хватает плавности
Например безумие на скорости 9 масштаб 40 яркость 120. когда яркость близка к нулю - (затемнение зоны) она дергается. явно не хватает шага яркости т.е. шаг яркости слишком велик

У нас программно-аппаратная штуковина. Матрицы разные, их как минимум 5 видов. Количество диодов тоже не одинаковое. Модули контроллеров тоже разные. Кварцы на них тоже разные. Отсюда и тайминги отличаются.
У меня все как у автора (гайвера) и матрица и контроллер. что за разные контроллеры, разве ESP8266 работают на разных частотах?
Задержку на отображение кадров делает регулятор скорости - от 1 до 255 мс
Тоесть скорость это тупо задержка отображения? тогда к чему удивлятся что мне не хватает плавности на малой скорости...
 

Palpalych

★★★★★✩✩
24 Дек 2019
766
405
@tolyan23, В принципе да... все крутые эффекты делаются на большой частоте кадров + математике.
 

tolyan23

✩✩✩✩✩✩✩
2 Янв 2020
21
8
@tolyan23, Думаю в Роспотребнадзор нужно написать!

Это авторский проект, собранный умельцами из говна и па.... из доступных элементов, и не имеющим аналогов среди бредовых производителей. Тут уж, как говорится, "as is"...
Нет тут ни говна ни палок (ну может только корпус) но корпус я печатаю на 3д принтере и с метра колхозом даже не пахнет. Компоненты так вообще очень современные. Да с охлаждением все плохо, но это скажется только на времени жизни матрицы. А аналогов действительно нет и в доказательство отсутствующие плафоны в леруа по всей стране на новый год.

@tolyan23, В принципе да... все крутые эффекты делаются на большой частоте кадров + математике.
И что мешает тут сделать крутые эффекты, 50-60fps даст достаточно плавности. Значит нас проблемы с математикой...
Вы можете подробно прокомментировать как работает код генерирующий матрицу? За что отвечает каждая функция и каждая переменная? Думаю я смог бы дописать кусочек чтобы получилось гораздо плавнее, в конце конов я уже писал "плавный" бегущий огонек. Матрица конечно скучный эффект но разобравшись с ней можно будет и метель и снегопад поправить
 

Сотнег

★★★★★★★
15 Янв 2020
4,305
1,477
Вы можете подробно прокомментировать как работает код генерирующий матрицу? За что отвечает каждая функция и каждая переменная? Думаю я смог бы дописать кусочек чтобы получилось гораздо плавнее, в конце конов я уже писал "плавный" бегущий огонек. Матрица конечно скучный эффект но разобравшись с ней можно будет и метель и снегопад поправить
Я могу прокомментировать каждую строчку в эффекте Матрица.
Вот здесь берите: https://community.alexgyver.ru/threads/wifi-lampa-budilnik-obsuzhdenie-proekta.1411/post-27482
Вопросы - в личку.
 

Palpalych

★★★★★✩✩
24 Дек 2019
766
405
@Сотнег, Прикольно! Сделай смещение на серию кадров по принципу
uint16_t delta;
x1 = (x+delta) % WIDTH;
delta++;
 

Koteyka 🐱

★★★★★★✩
Команда форума
27 Окт 2019
935
556
54
Днепр, Украина
firelamp.pp.ua
@mason, Сам делал.
Дисплеи от мониторов, LCD телевизоров и ноутов рулят.
В них есть и оргстекло и матовые пленки, причем разные.
Из оргстекла под размер компакт-диска вырезал два круга, коронкой просверлил под трубу.
Получается что-то типа такого.
IMG_20200227_143637[1].jpg
Это толстое оргстекло от монитора с ламповой подсветкой.
У телевизоров и мониторов LED стекло тоньше.
Потом на двухсторонний скотч клею пленку. Ее плотность так же зависит от типа монитора.
Вот, например, из одной матрицы ноутбука с LED подсветкой
1582807766241.jpeg
Подставкой служит сама коробка от дисков.
Поскольку шаблоном для колец служил сам диск, то лампа становится на эту коробку идеально.В общем, как-то так.
 

Palpalych

★★★★★✩✩
24 Дек 2019
766
405
функция масштаба... но нужно будет каждую точку пересчитывать по 2 координатам
 

Сотнег

★★★★★★★
15 Янв 2020
4,305
1,477
@Palpalych, не знаю, к чему её применить.

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

Palpalych

★★★★★✩✩
24 Дек 2019
766
405
@Сотнег, А она разве не безшовная?
на счет функции делаешь интерполяцию точек берешь 2 соседние, допустим x1, и x2

то искомая при 50% перекрытии будет x= avg8(x1, x2)
Если со смещением 25% (s = 63 от 0...255)
x= scale8(x1, s) + scale8(x2, 255 - s);
 

Palpalych

★★★★★✩✩
24 Дек 2019
766
405
@Igok, Все конечно можно, но без адаптации прошивки под автоматическое уведомление к внешнему софту все усилия будут тщетны и смысла имень не будут.

@Сотнег, а квадрат производных случайного синуса по яркости для 2х координат и элипсовидным смещением разве не спасут отца русской демокр... этот эффект?
 

Rampart

★✩✩✩✩✩✩
15 Дек 2019
12
10
@Palpalych, раз уж тянете совмстимость с прошивкой гуннера, хотя бы в комментариях, хорошо бы и в этом месте прописать закомментированную строку с корректным вызовом:
C++:
void fireRoutine(char *isColored)                       // C - цветной огонь, остальное - белый
//void fireRoutine(bool isColored)                      // <- ******* для оригинальной прошивки Gunner47 *******
{
  fire_drawFrame((strcmp(isColored, "C") == 0));
//fire_drawFrame(isColored);     // <- ******* для оригинальной прошивки Gunner47 *******
}
 

Palpalych

★★★★★✩✩
24 Дек 2019
766
405
@Rampart, Ой, времени маловато все следить и даже програмировать. Иногда идея приходит все потом блоками снсишь и переделываешь. На мелочи особо не хватает усердия. ((( занесу в скетч. Спасибо.
 

kostyamat

★★★★★★✩
29 Окт 2019
1,098
631
@Palpalych, так форкните уже общие наработки с kdn, плиз. А то тут у нас просто глумление какое-то, по всем темам собирают люди.
 
  • Лойс +1
Реакции: Belokota

Rampart

★✩✩✩✩✩✩
15 Дек 2019
12
10
раз уж пошла такая пьянка, вот мои коррекции метели и звездопада. Задействована вся матрица, причем как закольцованная. В оригиналале - матрица квадратная и используется только 75% поверхности.

C-like:
// ------------- метель -------------
#define SNOW_DENSE            (60U)                         // плотность снега
#define SNOW_TAIL_STEP        (100U)                        // длина хвоста
#define SNOW_SATURATION       (0U)                          // насыщенность (от 0 до 255)
void snowStormRoutine()
{
  if (loadingFlag)
  {
    loadingFlag = false;
    FastLED.clear();
  }
 
  // заполняем головами комет левую и верхнюю линию
//  for (uint8_t i = HEIGHT / 2U; i < HEIGHT; i++)
//  {
//    if (getPixColorXY(0U, i) == 0U &&
//       (random(0, SNOW_DENSE) == 0) &&
//        getPixColorXY(0U, i + 1U) == 0U &&
//        getPixColorXY(0U, i - 1U) == 0U)
//    {
//      leds[getPixelNumber(0U, i)] = CHSV(random(0, 200), SNOW_SATURATION, 255U);
//    }
//  }
 
//  for (uint8_t i = 0U; i < WIDTH / 2U; i++)
  for (uint8_t i = 0U; i < WIDTH; i++)
  {
    if (getPixColorXY(i, HEIGHT - 1U) == 0U &&
       (random(0, map(modes[EFF_SNOWSTORM].Scale, 0U, 255U, 10U, 120U)) == 0U) &&
        getPixColorXY(i + 1U, HEIGHT - 1U) == 0U &&
        getPixColorXY(i - 1U, HEIGHT - 1U) == 0U)
    {
      leds[getPixelNumber(i, HEIGHT - 1U)] = CHSV(random(0, 200), SNOW_SATURATION, 255U);
    }
  }

  // сдвигаем по диагонали
  for (uint8_t y = 0U; y < HEIGHT - 1U; y++)
  {
    for (uint8_t x = WIDTH - 1U; x > 0U; x--)
    {
      drawPixelXY(x, y, getPixColorXY(x - 1U, y + 1U));
    }
    drawPixelXY(0, y, getPixColorXY(WIDTH - 1U, y + 1U));
  }

  // уменьшаем яркость левой и верхней линии, формируем "хвосты"
//  for (uint8_t i = HEIGHT / 2U; i < HEIGHT; i++)
//  {
//    fadePixel(0U, i, SNOW_TAIL_STEP);
//  }
  for (uint8_t i = 0U; i < WIDTH; i++)
//  for (uint8_t i = 0U; i < WIDTH / 2U; i++)
  {
    fadePixel(i, HEIGHT - 1U, SNOW_TAIL_STEP);
  }
}

// ------------- звездопад -------------
#define STAR_DENSE            (60U)                         // плотность комет
#define STAR_TAIL_STEP        (100U)                        // длина хвоста кометы
#define STAR_SATURATION       (150U)                        // насыщенность кометы (от 0 до 255)
void starfallRoutine()
{
  if (loadingFlag)
  {
    loadingFlag = false;
    FastLED.clear();
  }
 
  // заполняем головами комет левую и верхнюю линию
//  for (uint8_t i = HEIGHT / 2U; i < HEIGHT; i++)
//  {
//    if (getPixColorXY(0U, i) == 0U &&
//       (random(0, STAR_DENSE) == 0) &&
//        getPixColorXY(0U, i + 1U) == 0U &&
//        getPixColorXY(0U, i - 1U) == 0U)
//    {
//      leds[getPixelNumber(0U, i)] = CHSV(random(0, 200), STAR_SATURATION, 255U);
//    }
//  }
 
//  for (uint8_t i = 0U; i < WIDTH / 2U; i++)
  for (uint8_t i = 0U; i < WIDTH; i++)
  {
    if (getPixColorXY(i, HEIGHT - 1U) == 0U &&
       (random(0, map(modes[EFF_STARFALL].Scale, 0U, 255U, 10U, 120U)) == 0U) &&
        getPixColorXY(i + 1U, HEIGHT - 1U) == 0U &&
        getPixColorXY(i - 1U, HEIGHT - 1U) == 0U)
    {
      leds[getPixelNumber(i, HEIGHT - 1U)] = CHSV(random(0, 200), STAR_SATURATION, 255U);
    }
  }

  // сдвигаем по диагонали
  for (uint8_t y = 0U; y < HEIGHT - 1U; y++)
  {
    for (uint8_t x = WIDTH - 1U; x > 0U; x--)
    {
      drawPixelXY(x, y, getPixColorXY(x - 1U, y + 1U));
    }
    drawPixelXY(0, y, getPixColorXY(WIDTH - 1U, y + 1U));
  }

  // уменьшаем яркость левой и верхней линии, формируем "хвосты"
//  for (uint8_t i = HEIGHT / 2U; i < HEIGHT; i++)
//  {
//    fadePixel(0U, i, STAR_TAIL_STEP);
//  }
//  for (uint8_t i = 0U; i < WIDTH / 2U; i++)
  for (uint8_t i = 0U; i < WIDTH; i++)
  {
    fadePixel(i, HEIGHT - 1U, STAR_TAIL_STEP);
  }
}