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
202
ЗДЕСЬ ОБСУЖДАЕМ ТОЛЬКО ДАННУЮ ПРОШИВКУ
ВСЕ ЧТО НЕ ПО СИЯ ТЕМЕ И ПРОШИВКЕ, ВСЕ СНОСИТСЯ НА@@@!

Очень просим не делать репост "ЦИТИРОВАНИЕ" сообщений! Делать только в КРАЙНЕЙ необходимости, удаляя лишний текст (у нас не ЧАТ)!
Иначе опять будет 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, проблема с загрузкой скетча
Читайте (ЧИТАЙТЕ! Не пишите!) эти темы, там уже есть решение вашей проблемы.
Здесь подобные вопросы считаются оффтопом и молча удаляются, а авторы получают баллы нарушений.
 
Изменено:

Palpalych

★★★★★✩✩
24 Дек 2019
765
404
@Сотнег, ну, потому, что метроном = 0 ударов в минуту
сначала может написал по памяти неправильно, потом выложил код - работает на ура!
 

Сотнег

★★★★★★★
15 Янв 2020
4,123
1,439

Сотнег

★★★★★★★
15 Янв 2020
4,123
1,439
@Palpalych, возвращаюсь к своей изначальной мысли...
Возьми в моей реализации привязку к скорости.
Я там beatsin8 препарировал до millis()

Во-первых, там значения будут эквивалентны от 0,1 до 160 бит в минуту (в зависимости от выбранного Масштаба),
а во-вторых, значения будут более плавными, так как я избавился от ограничения BPN на целочисленные значения.
 

Palpalych

★★★★★✩✩
24 Дек 2019
765
404
@Сотнег,

(Speed >> 2U) = (Speed / 4) , просто быстрее в машинных тактах

255 - главное условие, чтобы не превысить это значение, иначе функция начнет сбоить

Кстати, такая же фигня и с реализацией функции ColorFromPalette - сейчас изучаю эту проблему

beatsin8 препарировал до millis()
не пойму, что это?
 

Сотнег

★★★★★★★
15 Янв 2020
4,123
1,439
@Palpalych, вместо функции beatsin8 я взял её исходный код...
Там 4 строчки, но по-прежнему не видно привязку к таймеру...
Поэтому взял исходный код функций в этих 4 строчках...
И так продолжил, пока не добрался до использования millis().

Кстати, такая же фигня и с реализацией функции ColorFromPalette - сейчас изучаю эту проблему
Это, наверное, потому что у тебя делитель .Scale не соответствует.
const TProgmemRGBPalette16 *curPalette = palettes[Scale / palletes_count];
-> const TProgmemRGBPalette16 *curPalette = palettes[Scale / palletes_steps];

dimScreen(250U - mod8(Scale, palletes_count) * (palletes_steps >> 2U));
-> dimScreen(250U - mod8(Scale, palletes_steps) * palletes_count);

И это что такое?
const uint8_t palletes_range = (uint16_t)palletes_count * palletes_count - 1U;
 
Изменено:

Palpalych

★★★★★✩✩
24 Дек 2019
765
404
@Сотнег, смотри, если у тебя, допустим 9 палитр, то каждая из палитр занимает диапазончик 256/9 = 28 шагов. а уже весь диапазон с ровными дапазончиками палитр без остатка: 28*9 = 252 - так вот этот параметр передаем колесу масштаба )))
Банальный оператор scale8 справится с обратным делением на поддиапазончики лучше, и плавнее, чем обычный оператор деления либо на 10 диапазонов (9 с хвостиком) или гипертрофированным 9-ым диапазоном состоявшим уже из 28+3(остаток) = 31 шага!
Все гениальное просто!

beatsin8 использует свой таймер, где 1 секунда = 1,024 фастледовской секунде... оправдано тем, что не используем 32 разрядные числа, а обходимся максимум 16 разрядными, что на порядок быстрее в расчетах.
 
Изменено:

Palpalych

★★★★★✩✩
24 Дек 2019
765
404
@Сотнег,

palletes_range - для обеспечения плавности переключения палитр
beatsin8 - на порядок производительнее такой же подпрограммы с millis()
 

Сотнег

★★★★★★★
15 Янв 2020
4,123
1,439
palletes_range - для обеспечения плавности переключения палитр
28*9 = 252 - так вот этот параметр передаем колесу масштаба )))
У тебя в коде не получится 28*9:
const uint8_t palletes_range = (uint16_t)palletes_count * palletes_count - 1U;
beatsin8 - на порядок производительнее такой же подпрограммы с millis()
Если сама beatsin использует подпрограммы с millis(), то как она может быть производительнее их?
 

Сотнег

★★★★★★★
15 Янв 2020
4,123
1,439
@Koteyka 🐱, берите мою. Она к прошивке хорошо подойдёт:

Только скорость этого эффекта не должна использоваться в effectTricker.
 

Palpalych

★★★★★✩✩
24 Дек 2019
765
404
@Сотнег,

Есть разница в скорости исчисления секунды (millis() / 1000) и (millis() >> 10) ?

У тебя в коде не получится 28*9:
Почему? не забывай, что если работаешь с беззнаковыми байтами, то 0 - это всегда 1 )))) (0...255) - это (1...256)

@Palpalych, а вызов призматы у вас как идет?
там же параметры нужно передавать
Вызов Призматы:
{EFF_PRISMATA, 0, 0, 0, palletes_range, []() { return prismataRoutine(eff_scale, eff_speed); }, 0, 192, 127, 127},
Первые 2 нуля - это скорость, если 0 == 0, то скорость с регулятора (значение 0...255) напрямую передается в эффект без задержки таймера эффектов
потом - 0, palletes_range - как раз автоматический пересчет нужного диапазона на регулятор скорости
 

Сотнег

★★★★★★★
15 Янв 2020
4,123
1,439
Есть разница в скорости исчисления секунды (millis() / 1000) и (millis() >> 10) ?
Я исходник не менял. Где были сдвиги, остались сдвиги. Где было умножение, осталось умножение.
в bearsin8() и сдвиги есть и умножения. Монструозная функция.

Почему? не забывай, что
По-моему, потому что у тебя банальная опечатка.
Я ведь цветами выделил умножение palletes_count * palletes_count (самого на себя) никогда не даст 28*9.
 
Изменено:
  • Лойс +1
Реакции: Palpalych

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
сть разница в скорости исчисления секунды (millis() / 1000) и (millis() >> 10) ?
Это разные операции, первое делит на 1000, вторе на 2 в степени 10, т.е. 1024
* Но я вообще не понимаю какую именно проблему вы тут с Сотником решаете и зачем :)
 

Palpalych

★★★★★✩✩
24 Дек 2019
765
404
@Сотнег, а, точно! А я даже не заметил... просто количество палитр довел до 8 - а там то на то выходит!

Сдвиги и умножение в машинных тактах практически моментальное действие, а вот деление может занимать сотню и больше тактов.
Происходит с пересчетом по алгоритму "деление в столбик" :cool: (математика 3-й класс...)
 

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
Почему? не забывай, что если работаешь с беззнаковыми байтами, то 0 - это всегда 1 )))) (0...255) - это (1...256)
0 для беззнакового всегда ноль, 255 всегда 255, 256 в 8 битах не существует. Для знаковых 255 будет -1, 127 это будет 127, -128 будет выглядеть как 1000 0000 т.е. под знак ВСЕГДА отдается страшний бит. Для двухбайтных и т.д. - пропорционально раширяется разрядная сетка :)
 

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
Сдвиги и умножение в машинных тактах практически моментальное действие, а вот деление может занимать сотню и больше тактов.
Происходит с пересчетом по алгоритму "деление в столбик" :cool: (математика 3-й класс...)
Сдвиг соотствествует умножению на степень двойки, это не то же самое что умножение.
 

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
@kDn, поднятие FPS в эффектах прошивки Gunner47 :D
Для поднятия FPS просто нужно убрать конструкцию с задержкой в цикле обработки эффекта, т.е. нечто вида:
C++:
if (ONflag && (millis() - effTimer >= ((currentMode < 7 || currentMode > 15 && currentMode != 25) ? 256U - modes[currentMode].Speed : 50)))
мне кажется не правильным в принципе. У меня фиксировано:
C++:
if(millis() - effTimer >= EFFECTS_RUN_TIMER && !isFaderOn){ // effects.getSpeed() - теперь эта обработка будет внутри эффектов
текущее значение для EFFECTS_RUN_TIMER == 16, было 20 до недавних пор.
 

Palpalych

★★★★★✩✩
24 Дек 2019
765
404
@kDn, Это понятно, у меня вообще для новых эффектов нет никакой задержки, поэтому FPS практически до 100 доходит ))) Приходится часть кадров пускать на дизеринг, тем самым сглаживая картинку
 

Сотнег

★★★★★★★
15 Янв 2020
4,123
1,439

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
@kDn, Это понятно, у меня вообще для новых эффектов нет никакой задержки, поэтому FPS практически до 100 доходит ))) Приходится часть кадров пускать на дизеринг, тем самым сглаживая картинку
Ну так совсем без задержки тоже не хорошо... это сильно нагружает ESP лишними расчетами, при том, что на визуальную составляющую никак не скажется. Да и тот же синусоид3 который я вчера ковырял - он сам по себе медленный из-за синусов/косинусов, а если его еще и молотить без задержек, то контроллеру поплохеет. Проверено. :)
 

Palpalych

★★★★★✩✩
24 Дек 2019
765
404
@Сотнег, я переписал эти места... поэтому это уже не имеет значения.
В новой реализации ввел сужение палитры до 12% на ширину матрице по косинусному закону)))
По старой логике она была примерно 65% постоянно.