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

KoteXitere

✩✩✩✩✩✩✩
30 Дек 2018
5
0
https://community.alexgyver.ru/threads/analizator-audio-spektra.31/
Спаял матрицу 32х9 из ленты. Все спаял согласно схеме, проблема в компиляции кода к матрице 32х9. Ставим ширину матрицы 32 высоту 9
компилятор выдает это
C:\Users\Admin\Desktop\FHTSpectrumAnalyzer-master\Firmware\spertrumWS2812_16x16_full\spertrumWS2812_16x16_full.ino: In function 'loop':
C:\Users\Admin\Desktop\FHTSpectrumAnalyzer-master\Firmware\spertrumWS2812_16x16_full\spertrumWS2812_16x16_full.ino:149:23: warning: iteration 16 invokes undefined behavior [-Waggressive-loop-optimizations]
if (maxLevel[pos] >= 0 && MAX_DOTS) { // тут я предполагаю что нужно &&(и) заменить на ||(или), ошибка проподает

C:\Users\Admin\Desktop\FHTSpectrumAnalyzer-master\Firmware\spertrumWS2812_16x16_full\spertrumWS2812_16x16_full.ino:103:28: note: containing loop
for (byte pos = 0; pos < WIDTH; pos++) { // а вот что тут ему не нравится, я не пойму
 

GSM73

✩✩✩✩✩✩✩
26 Янв 2019
2
0
Здравствуйте! Повторил ваш проект на (MAX7219). Что отредактировать в скетче чтоб анализатор работал на 8и блоках? Или надо библиотеку править? Просто модуль уже лежит год спаенный без дела. А тут ваш проект подвернулся в тему.
 
Изменено:

Remdog

✩✩✩✩✩✩✩
14 Окт 2019
3
0
Добрый день!
Не получается прошить ардуино нано скетчем (spertrumWS2812_16x16_full) для графического анализатора спектра для матрицы 16х16.
Программа пишет что мало памяти:
"Скетч использует 9732 байт (31%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 1830 байт (89%) динамической памяти, оставляя 218 байт для локальных переменных. Максимум: 2048 байт.
Недостаточно памяти, программа может работать нестабильно."
Скетч вроде загружается, н горит только центральный столбик.
Что сделано не так?
 

Вложения

dead-mazay

✩✩✩✩✩✩✩
18 Янв 2020
8
1
Решил собрать данный девайс и так как под рукой не было матрицы а был кусок ленты чуть более 1 метра (80 диодов), решил сделать матрицу шириной 8 и высотой 10 диодов (в дальнейшем как приедет лента планируется сделать по крупнее). Спаял данное дело параллельно. Однако в скетче никак не могу объяснить ардуинке что лента у меня не зигзагом, а паралельно спаяна. В программировании я крайне слаб, тем не менее пытался вставить строки (в скетче их нет) -
  • #define MATRIX_TYPE 1 // тип матрицы: 0 - зигзаг, 1 - последовательная
  • #define CONNECTION_ANGLE 0 // угол подключения: 0 - левый нижний, 1 - левый верхний, 2 - правый верхний, 3 - правый нижний
  • #define STRIP_DIRECTION 1 // направление ленты из угла: 0 - вправо, 1 - вверх, 2 - влево, 3 - вниз
но ардуинка на них не реагирует - лента явно видно работает в режиме зигзаг. Помогите с кодом пожалуйста)
 

dead-mazay

✩✩✩✩✩✩✩
18 Янв 2020
8
1
Была такая же проблема - проверь внимательно пайку
 

Вложения

dead-mazay

✩✩✩✩✩✩✩
18 Янв 2020
8
1
Решил собрать данный девайс и так как под рукой не было матрицы а был кусок ленты чуть более 1 метра (80 диодов), решил сделать матрицу шириной 8 и высотой 10 диодов (в дальнейшем как приедет лента планируется сделать по крупнее). Спаял данное дело параллельно. Однако в скетче никак не могу объяснить ардуинке что лента у меня не зигзагом, а паралельно спаяна. В написании кода я крайне слаб, тем не менее пытался вставить строки (в скетче их нет) -
  • #define MATRIX_TYPE 1 // тип матрицы: 0 - зигзаг, 1 - последовательная
  • #define CONNECTION_ANGLE 0 // угол подключения: 0 - левый нижний, 1 - левый верхний, 2 - правый верхний, 3 - правый нижний
  • #define STRIP_DIRECTION 1 // направление ленты из угла: 0 - вправо, 1 - вверх, 2 - влево, 3 - вниз
но ардуинка на них не реагирует - лента явно видно работает в режиме зигзаг. Помогите с кодом пожалуйста)

И все-таки - отзовитесь хоть кто-нибудь - объясните в чем причина?
 

novvel

★★✩✩✩✩✩
29 Сен 2018
318
75
В общем повторил, код немного подправил по советам из темы самого проекта на сайте. Но! Проблема в том что я использовал ленту и получилось 10 полос по 12 в высоту. И тут то после прогона генератором (работает через микрофон вся эта лабуда по схеме цветомузыки) оказалось, что максимальная частота около 3,5 кГц, видел массив тонов в самом скетче, но его правка только делает хуже, как сократить диапазон так, что бы получилось по ВЧ около 15 кГц? И как посчитать вообще этот массив тонов? А то в программировании на уровне пятиклассника, максимум что могу это поменять направление отрисовки в скетче и добавить внутренний источник опорного :D
Прошивка правленая вот:
 

Вложения

alexei82

✩✩✩✩✩✩✩
6 Дек 2020
2
0
подскажите не разобрался как поменять направление ленты у меня подключено зигзагом как на фото. Поменял в прошивке пин дина ленты вместо 12 по умолчанию на 6 пин (у меня просто так подключено.)), пока не заработало, мигают в разнобой. Еще подскажите правильно я спаял 3 резистора которые по 10 к (фото ниже) Извините за глупые вопросы, недавно начал заниматься ардуино. Собираю 7 полос по 20 светодиодов.
 

Вложения

novvel

★★✩✩✩✩✩
29 Сен 2018
318
75
подскажите не разобрался как поменять направление ленты у меня подключено зигзагом как на фото. Поменял в прошивке пин дина ленты вместо 12 по умолчанию на 6 пин (у меня просто так подключено.)), пока не заработало, мигают в разнобой. Еще подскажите правильно я спаял 3 резистора которые по 10 к (фото ниже) Извините за глупые вопросы, недавно начал заниматься ардуино. Собираю 7 полос по 20 светодиодов.
Кусок кода где меняется направление, именно этот кусок справедлив для подключения зигзагом слева снизу, лента вверх, как сменить столбцы и строки местами я не разбирался, возможно чуть выше над этим прям кодом в скетче.
Резисторы правильно, если цвета совпадают со схемой. Пайка не очень хорошая, мало канифоли(флюса) используешь, не жадничай и паяльник вроде не догрет))
C++:
        if (pos % 2 != 0)                                  // если чётная строка
            leds[pos * HEIGHT + HEIGHT - j - 1] = color;     // заливаем в обратном порядке
          else                                               // если нечётная
            leds[pos * HEIGHT + j] = color;                  // заливаем в прямом порядке leds[pos * HEIGHT + HEIGHT - j - 1] = color;
        }
      }

      if (posLevel > 0 && posLevel > maxLevel[pos]) {        // если для этой полосы есть максимум, который больше предыдущего
        maxLevel[pos] = posLevel;                            // запомнить его
        timeLevel[pos] = millis();                           // запомнить время
      }

       // если точка максимума выше нуля (или равна ему) - включить пиксель
      if (maxLevel[pos] >= 0 && MAX_DOTS) {
        if (pos % 2 != 0)                                                // если чётная строка
          leds[pos * HEIGHT + HEIGHT - maxLevel[pos] - 1] = MAX_COLOR;   // заливаем в обратном порядке
        else                                                             // если нечётная
           leds[pos * HEIGHT + maxLevel[pos]] = MAX_COLOR;               // заливаем в прямом порядке leds[pos * HEIGHT + HEIGHT - maxLevel[pos] - 1] = MAX_COLOR;
Добавил прошивку с фиксами, там в комментах все описано в скетче.
08.12.2020
Добавлен более удобный реверс столбцов вверх/вниз.
Исправил баг с двойными пиками при их отображении.
 

Вложения

Изменено:

plmkoi

✩✩✩✩✩✩✩
10 Окт 2020
5
1
Здравствуйте , кто нибудь может подсказать что нужно сделать чтоб анализатор работал на матрице W2812 только не 16*16 а 12*16 Я меняю цифры в скейтче на 12*16 и не работает все загружается без проблем. но не работает на этой матрице просто моргает как попало под музыку , возвращаю 16* 16 подключаю все работает, подозреваю надо еще что то поменять там есть в строке количество диодов 256 я меняю на 192 все перестает работать компиляция не выполняется , что делать !!!
 

Fеnix

✩✩✩✩✩✩✩
25 Ноя 2020
4
0
именно этот кусок справедлив для подключения зигзагом слева снизу, лента вверх, как сменить столбцы и строки местами я не разбирался
Если разберетесь отпишитесь пожалуйста, или может получится в скетч добавить возможность менять направление матрицы.
 

novvel

★★✩✩✩✩✩
29 Сен 2018
318
75
@Fеnix, Я посмотрел, мне это не под силу, кодер из меня слишком дилетантский, там не просто макрос, там я так понял именно высчитывание позиции пикселей и отсчет от них, мне сложно понять логику пока что) Может кто другой допишет и выложит так же в общий доступ....
 

geralt

✩✩✩✩✩✩✩
9 Янв 2021
2
0
Привет всем, это мой первый проект, но сути дела не меняет . Кратко опишу свою ситуацию: не поставил конденсатора для громкости, (но поставлю сразу как только дотянутся руки, пока просто на максимальную громкость выкручиваю), использую джек с левым и правым каналом (а не ?центральным? как сказано в видио) , загрузил прошивку, все подключил, но работает не как анализатор спектра, а как какая-то левая светомузыка https://drive.google.com/file/d/1kEzJmg2ylbXWmfBNs9Vb7Vm-LxRDG462/view?usp=sharing (на видио в гуглдрайве видно что я имею ввиду). Кто сталкивался с таким, либо может знает как исправить ?Код исходный нечего не перекручивал. Ардуина вроде рабочая.
Буду премного благодарен и одарю виртуальными печеньками.
 

Omm

✩✩✩✩✩✩✩
22 Дек 2020
3
0
@geralt, сам проект где можно посмотреть? Кинь, пож., ссылочку - тоже интересуюсь.
А конденсатор на входе? Мож надо его, всетаки.
Схемку входа не скинешь?
 

Omm

✩✩✩✩✩✩✩
22 Дек 2020
3
0

Попробуй переменной pos другой тип применить., а то луп пытается байтами считать и улетает за пределы адреса.
Памяти сколько в плате?
 

Omm

✩✩✩✩✩✩✩
22 Дек 2020
3
0
Все понимаю, но на смартфоне сложно что-либо найти...
За ответ спасибо. Мало кто на такие вопросы отвечает.
Когда соберу что нибудь заслуживающее внимания специалистов, то обязательно выложу на обсуждение.
 

novvel

★★✩✩✩✩✩
29 Сен 2018
318
75
Все понимаю, но на смартфоне сложно что-либо найти...
За ответ спасибо. Мало кто на такие вопросы отвечает.
Когда соберу что нибудь заслуживающее внимания специалистов, то обязательно выложу на обсуждение.
Если нужно на адресных светодиодов, то попробуй мой вариант, может он устроит лучше, чем оригинал. https://community.alexgyver.ru/threads/analizator-audio-spektra.31/
Если сделаешь свой вариант, то выложи как оформил все внешне, а то нет идей))
 

Fеnix

✩✩✩✩✩✩✩
25 Ноя 2020
4
0
Собрал с микрофоном и 2 резисторами по 10кОм вариант @novvel,
Но не пойму, почему с матрицей 15*20 ардуина шьется, но виснет, неужели ардуино нано не хватает?
PS: если ставлю размер матрицы 15*19 все нормально.