ARDUINO Анализатор аудиоспектра. Обсуждение проекта

kostyamat

★★★★★★★
29 Окт 2019
3,125
1,787
@kDn, он отдельно жил от системного. Я его вставлял только для отладки эффектов, и убирал перед коммитами. А не хрен знает куда. Ога.
 

maxlab

★✩✩✩✩✩✩
9 Май 2021
24
12
Вот так можно прикинуть плюс-минус лапоть. Полный круг около 30 мс
1623967470897.png
 

kDn

★★★★★★★
18 Ноя 2019
3,946
2,308
@kDn, он отдельно жил от системного. Я его вставлял только для отладки эффектов, и убирал перед коммитами. А не хрен знает куда. Ога.
Слушайте, я ведь нашел коммиты где вы его вставили, как и предполагалось - не туда и не так. Если есть желание поспорить, лучше в нашей ветке, я вам номера коммитов дам, если очень надобно.

------------------------------------------
FastLED.getFPS() 85 кадров показывает. Я его сюда вставил
Правильнее вставить в обертке вида
C++:
EVERY_N_SECONDS(5){
    FastLED.getFPS();
}
чтобы вам не спамило в терминал :), а так - все верно, значит 85 и выходит.
 

kDn

★★★★★★★
18 Ноя 2019
3,946
2,308
меня не очень интересует внутренний счетчик Фастлед, мне интересна общая длительность "оборота" loop() у @maxlab. Подозреваю, что эти цифры не совпадаут.
Ну так и напишите свой код для расчете FPS, если вы в библиотечном не уверены))). Или вы хотите глупую работу для @maxlab придумать? Ну если ему нечем заняться - пусть пишет, но смысла особого нет. Вот к примеру сверка двух счетчиков у нас:
01:11:12.541 > Eff:1, FPS: 49, FastLED FPS: 50
01:11:27.584 > Eff:1, FPS: 49, FastLED FPS: 49
01:11:57.674 > Eff:13, FPS: 36, FastLED FPS: 34
01:12:12.785 > Eff:13, FPS: 33, FastLED FPS: 35
01:12:27.904 > Eff:13, FPS: 35, FastLED FPS: 34
как можно заметить, достаточно схожие результаты :)
 

maxlab

★✩✩✩✩✩✩
9 Май 2021
24
12
ХЗ почему по три раза... Наверное особенности ядра для китайского чипа :) Завтра меандр на любой пин свободный из лупа кину, частотомером померяю
 

bort707

★★★★★✩✩
21 Сен 2020
1,120
323
Завтра меандр на любой пин свободный из лупа кину, частотомером померяю
если не сложно. Работу вам добавлять не хочу, спрашиваю из банального интереса.
А насчет FastLED.getFPS() - подозреваю, что оно меряет "скорострельность" только своего кода вывода на ленту, а не всей программы... - отсюда и разница в результатах в 3 раза.
И использовать ее , например, для оценки скорости работы эффектов в лампе, вообще-то, нельзя.
 

kostyamat

★★★★★★★
29 Окт 2019
3,125
1,787
FastLED.getFPS() считает сколько раз произошел FastLED.show() за 1000мс, если выводить три раза за loop, а луп 30мс, то можно получить что-то типа 100фпс. А так то 33 loop на секунду выходит. В принципе, тут противоречий нет. Если алгоритму нужно несколько раз за loop выводить картинку - ну ОК. Сам loop и его длительность тут никаким боком.
 

kDn

★★★★★★★
18 Ноя 2019
3,946
2,308
ХЗ почему по три раза... Наверное особенности ядра для китайского чипа :) Завтра меандр на любой пин свободный из лупа кину, частотомером померяю
Дык если вообще убрать все из цикла и оставить там лишь вывод в терминал, то сколько успеет, столько и выведет))). Но вообще спамить в терминал идея плохая, т.к. вы этим только замедляете работу камня, выводите данные реже, раз в 5-10 секунд достаточно.
 

bort707

★★★★★✩✩
21 Сен 2020
1,120
323
FastLED.getFPS() считает сколько раз произошел FastLED.show() за 1000мс, если выводить три раза за loop, а луп 30мс, то можно получить что-то типа 100фпс.
согласен, только если посмотреть код автора - FastLED.show() у него в коде вызывается один раз.
Правда, у него лента разделена на две ветви - это могло бы обьяснить двойной счет. Откуда третий - вообще неясно.

В любом случае, если ЛУП вызывается 33 раза в секунду а лента обновляется один раз в цикле ЛУП, то FPS -=85 - очевидно завышенная цифра.
Как я. в принципе, и предполагал, задавая этот вопрос @maxlab
 

maxlab

★✩✩✩✩✩✩
9 Май 2021
24
12
@kDn, я в курсе. В продакшен паршивке вывода в терминал нету и Serial не подключен.
 

kostyamat

★★★★★★★
29 Окт 2019
3,125
1,787
Я скетч разглядывал поверхностно, можно сказать вообще не рассматривал. Но что "попало в глаз" - используется параллельный вывод на две матрицы. FastLED лед даже один вызов show в таком случае считает за два. В таком случае, если перестать спамить в сериал, а выводить раз в 5-10 секунд, реальный ФПС будет 100. Точнее 50ФПС на матрицу. Что очень не плохо.

#** Классный у чинов камушек вышел.
 
Изменено:

bort707

★★★★★✩✩
21 Сен 2020
1,120
323
используется параллельный вывод на две матрицы.
последовательный, вообще-то
FastLED лед даже один вызов show в таком случае считает за два.
что, очевидно, неправильно. То есть цифру ФастЛЕд в данном случае надо, как минмум, делить на два.
 

kostyamat

★★★★★★★
29 Окт 2019
3,125
1,787
@bort707, ну так все равно полтинник. Что круто, как для камня уровня 328.
 

kDn

★★★★★★★
18 Ноя 2019
3,946
2,308
В любом случае, если ЛУП вызывается 33 раза в секунду а лента обновляется один раз в цикле ЛУП, то FPS -=85 - очевидно завышенная цифра.
На картинке ниже я вижу что-то около 28 (точно не считал) вызовов за ~300мс (треть секунды), а вы сколько видите? :)
Вот так можно прикинуть плюс-минус лапоть. Полный круг около 30 мс
Посмотреть вложение 27481
 

bort707

★★★★★✩✩
21 Сен 2020
1,120
323
На картинке ниже я вижу что-то около 28 (точно не считал) вызовов за ~300мс (треть секунды), а вы сколько видите?
уже нет смысла спорить, на картинку #70 с осцилом посмотрите. Около 40 Гц там, что очень хорошо бьется с результатом 30мс на цикл, с учетом времени на сам вывод в Сериал.

Вывод - ФастЛед слегка завышает :) чтобы программистам было приятно :)
 

kostyamat

★★★★★★★
29 Окт 2019
3,125
1,787
Вывод - ФастЛед слегка завышает :) чтобы программистам было приятно :)
Нет. Не завышает. @kDn считал отдельной самописной функцией, +-1FPS. Я же говорю - отключить сериал, или выводить раз в пару секунд, и будет ~90-100/2.
 

kDn

★★★★★★★
18 Ноя 2019
3,946
2,308
уже нет смысла спорить, на картинку #70 с осцилом посмотрите. Около 40 Гц там, что очень хорошо бьется с результатом 30мс на цикл, с учетом времени на сам вывод в Сериал.
Так, а код при этом менялся? Ну там может пин какой-то дергался для меандра? И что при этом стало со значением FPS? Оно не изменилось или изменилось? Так-то для меня картинка без кода и без лога мало чего говорит :)