Пользовательский блок ( Помощь )

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Аватара пользователя
Uapaha74
Рядовой
Сообщения: 20
Зарегистрирован: 04.10.2015{, 11:01}
Репутация: 0

Пользовательский блок ( Помощь )

#1

Сообщение Uapaha74 » 27.05.2017{, 18:31}

Всем доброго времени ! 

Начал пытаться делать пользовательский блок по видео уроку
СпойлерПоказать
_uVideoPlayer({'url':'');
Блок FFT (от «fast Fourier transform», что значит «быстрое преобразование Фурье» )
Я с ардуино, знаком минимально, но блок такой край как нужен. 
Сил а по большей части знаний, хватило дойти до: Изображение
И тут для меня  оказался тупик :(Да и не у верен я, что предыдущие вкладки были заполнены правильно  (Declare,Setup,Loop) 

Знатоки гляньте есть ли надежна на жизнь этого блока !?, подскажите что да как .

 блок fft-_Фурье_(CODE).ubi ( или то что получилось )

Пример применения БПФ на данных от АЦП и отправка результата посредством println()

Подробное описание Arduino:Библиотеки/FFT

Аватара пользователя
Dev1
Майор
Сообщения: 1026
Зарегистрирован: 12.07.2016{, 18:04}
Репутация: 59
Откуда: Гондурас

Пользовательский блок ( Помощь )

#2

Сообщение Dev1 » 27.05.2017{, 19:01}

Для проверки кода очень полезен Notepad ++ там есть подсветка синтаксиса.

Вот пример с вашего кода из секции loop в блокноте:


Тут сразу видно что не хватает - }

Добавлено (27.05.2017, 19:01)
---------------------------------------------
Цикл while
Вложения
9537708.jpg
Win10-64 FLProg v7.5.2 Portable :fie:

Аватара пользователя
Uapaha74
Рядовой
Сообщения: 20
Зарегистрирован: 04.10.2015{, 11:01}
Репутация: 0

Пользовательский блок ( Помощь )

#3

Сообщение Uapaha74 » 27.05.2017{, 23:18}

Dev1 писал(а):Тут сразу видно что не хватает - }
Да   так  и есть но вот как заполнить эту вкладку ? -Изображение
Чем ? что туда писать ? ( простите за скудоумие Для меня это Эверест ! ))

Аватара пользователя
Dev1
Майор
Сообщения: 1026
Зарегистрирован: 12.07.2016{, 18:04}
Репутация: 59
Откуда: Гондурас

Пользовательский блок ( Помощь )

#4

Сообщение Dev1 » 28.05.2017{, 00:26}

Uapaha74 писал(а):Чем ? что туда писать ?
Ничего не писать. Это для отдельных функций, которые вызываете в void loop.  В примере нету отдельных функций.
Win10-64 FLProg v7.5.2 Portable :fie:

Аватара пользователя
Uapaha74
Рядовой
Сообщения: 20
Зарегистрирован: 04.10.2015{, 11:01}
Репутация: 0

Пользовательский блок ( Помощь )

#5

Сообщение Uapaha74 » 28.05.2017{, 15:50}

Dev1, Как мне тогда прикрепить эту функцию "(fft_log_out);// отсылаем данные" к выходу "log" пользовательского блока 
Изображение

Аватара пользователя
rw6cm
Полковник
Сообщения: 2284
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 335
Имя: Владимир

Пользовательский блок ( Помощь )

#6

Сообщение rw6cm » 29.05.2017{, 08:03}

Uapaha74, Можно поинтересоваться, как вы на практике хотите использовать этот блок?
Что на него подавать - что с него получать, и для каких целей?

п\с Всегда старался обходить стороной теоретиков,
сегодня с утреца на свежую голову решил восполнить пробел...
То хоть какое то имел представление - теперь сплошное месиво )))
Win10-64, FLProg (portable)

Аватара пользователя
Dev1
Майор
Сообщения: 1026
Зарегистрирован: 12.07.2016{, 18:04}
Репутация: 59
Откуда: Гондурас

Пользовательский блок ( Помощь )

#7

Сообщение Dev1 » 29.05.2017{, 12:03}

Вчера не смог посмотреть что это за зверь. Ща открыл вики мой мозг меня послал... Открыл как пишут простое объяснение...
не осилил...

Добавлено (29.05.2017, 08:48)
---------------------------------------------
Uapaha74, сдается мне что 
[*] fft_window(); // функция-окно, повышающая частотное разрешение
[*] fft_reorder(); // реорганизовываем данные перед запуском БПФ
[*] fft_run(); // обрабатываем данные в БПФ
[*] fft_mag_log(); // извлекаем данные, обработанные БПФ
[*] sei();
обязательный кусок кода для вычисления. Хотя они тоже могут варьироваться...
Uapaha74 писал(а):Как мне тогда прикрепить эту функцию "(fft_log_out);
я думаю можно как значение переменной использовать, только байт нужно задавать (fft_log_out[byte]).
Может попробую этого зверя поковырять сегодня...

Добавлено (29.05.2017, 12:03)
---------------------------------------------
Мде... Библиотека морально устарела, ошибок куча. Оказывается, в IDE уже все сделали, в управлении библиотеками ставим ArduinoFFT, она компилируется в 1.8.2 без ошибок.
Win10-64 FLProg v7.5.2 Portable :fie:

Аватара пользователя
Uapaha74
Рядовой
Сообщения: 20
Зарегистрирован: 04.10.2015{, 11:01}
Репутация: 0

Пользовательский блок ( Помощь )

#8

Сообщение Uapaha74 » 29.05.2017{, 18:21}

rw6cm, конечно можно.
На вход А0 и GND Кидается микрофон ( В моем случае, для теста, берется сигнал с наушника. )
rw6cm писал(а):что с него получать
1)Линейный спектр: 20герц, 25герц, 30 , 35, 40 ,...........20 000герц ( градация условна )
2) Логарифмический спектр низких частот от 20герц до 100 герц ( Насколько я понял его, он рассчитывает максимально громкую частоту по отношению к другим )  
что мне в принципе и нужно.
rw6cm писал(а):и для каких целей
Измерение звукового  спектра для настройки аудио систем . ( частное использование )

Dev1,  
Dev1 писал(а):Открыл как пишут простое объяснение...не осилил...
 Я сам закипел, Но край как нужно .
Dev1 писал(а):она компилируется в 1.8.2 без ошибок.
В IDE 1.8.1 тоже запускается без проблем , единственное что  примеры нужно брать с сайта, из первого поста , т.к. один из примеров, идущий с библиотекой, выдает ошибку .

Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03.02.2017{, 12:23}
Репутация: 56

Пользовательский блок ( Помощь )

#9

Сообщение AVGN » 30.05.2017{, 12:26}

Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн

Аватара пользователя
Uapaha74
Рядовой
Сообщения: 20
Зарегистрирован: 04.10.2015{, 11:01}
Репутация: 0

Пользовательский блок ( Помощь )

#10

Сообщение Uapaha74 » 30.05.2017{, 18:42}

Примерно такое решение я и хотел бы видеть в пользовательском блоке.

Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03.02.2017{, 12:23}
Репутация: 56

Пользовательский блок ( Помощь )

#11

Сообщение AVGN » 30.05.2017{, 19:40}

Uapaha74 писал(а):Пример применения БПФ на данных от АЦП и отправка результата посредством println()
Не компилируется, выдает ошибки. Из этого примера невозможно сделать блок.
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн

Аватара пользователя
Uapaha74
Рядовой
Сообщения: 20
Зарегистрирован: 04.10.2015{, 11:01}
Репутация: 0

Пользовательский блок ( Помощь )

#12

Сообщение Uapaha74 » 31.05.2017{, 17:23}

AVGN, Вот еще пример на этой же библиотеки. <a class="link" href="http://u.to/ukn3Dw" title="http://wikihandbk.com/wiki/Arduino:%D0% ... 8B/fft_adc" rel="nofollow" target="_blank">Применение БПФ на данных от АЦП и отправка результата посредством write()
AVGN писал(а):Не компилируется, выдает ошибки. Из этого примера невозможно сделать блок.
Не компилируется  блок в среде FLPROG , или же в  Arduino ID сам пример?

Библиотека fft_3
Последний раз редактировалось Uapaha74 31.05.2017{, 20:16}, всего редактировалось 1 раз.

Аватара пользователя
rw6cm
Полковник
Сообщения: 2284
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 335
Имя: Владимир

Пользовательский блок ( Помощь )

#13

Сообщение rw6cm » 01.06.2017{, 15:25}

Uapaha74 писал(а):1)Линейный спектр: 20герц, 25герц, 30 , 35, 40 ,...........20 000герц 
2) Логарифмический спектр низких частот от 20герц до 100 герц
Честно говоря берут сомнения, что АЦП ардуины с этим справится.
В качестве "цветомузыки" возможно это и пойдет,
но в качестве анализатора данные будут очень относительные.
Будет время для интереса попробую.
Win10-64, FLProg (portable)

Аватара пользователя
Uapaha74
Рядовой
Сообщения: 20
Зарегистрирован: 04.10.2015{, 11:01}
Репутация: 0

Пользовательский блок ( Помощь )

#14

Сообщение Uapaha74 » 02.06.2017{, 20:05}

rw6cm писал(а):Будет время для интереса попробую.
Буду очень благодарен!

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Пользовательский блок ( Помощь )

#15

Сообщение pan » 10.07.2017{, 10:11}

может кто подсказать по использованию программного i2c ? пните в нужном направлении )

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Пользовательский блок ( Помощь )

#16

Сообщение Sancho » 10.07.2017{, 14:33}

pan,
Библиотека Write.h
Простые команды: запись
одного

Wire.beginTransmission(address);
Wire.write( byte ); // адрес регистра
Wire.write( byte ); // значение
Wire.endTransmission();

несколько
Wire.beginTransmission(address);
Wire.write(first byte);
Wire.write(byte);
Wire.write(byte);
Wire.write(byte);
Wire.endTransmission();

чтение одного

Wire.beginTransmission(address);
Wire.write( byte ); // адрес регистра

Wire.endTransmission();
Wire.requestFrom(address, (uint8_t) 1);
rezultat = Wire.read();

несколько, в примере 3

Wire.beginTransmission(address);
Wire.write( first byte );  // адрес первого регистра 
Wire.endTransmission();
Wire.requestFrom(address, (uint8_t) 3);
rez_1 = Wire.read();
rez_2 = Wire.read();
rez_3 = Wire.read();

Добавлено (10.07.2017, 14:33)
---------------------------------------------
Необходимо учитывать семибитную систему адресации, где правый, младший разряд в восьмибитном слове - это служебный символ запись/чтение.
То, как определяет сканер FLPRog, можно вставлять напрямую и ничем не заморачиваться.
Последний раз редактировалось Sancho 10.07.2017{, 14:24}, всего редактировалось 1 раз.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Пользовательский блок ( Помощь )

#17

Сообщение pan » 10.07.2017{, 14:44}

как будет выглядеть аналогия железного i2c  Wire.requestFrom(X,Y,); ?

Добавлено (10.07.2017, 14:44)
---------------------------------------------
блин проглядел. сори

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Пользовательский блок ( Помощь )

#18

Сообщение Sancho » 10.07.2017{, 14:48}

Не совсем понял вопрос.
I2c в ардуино на А4,А5 аналогична в работе serial0, также в setup Wire.begin(); как и Serial.begin(115200);
Глубже не копал...
Последний раз редактировалось Sancho 10.07.2017{, 14:57}, всего редактировалось 1 раз.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Пользовательский блок ( Помощь )

#19

Сообщение pan » 10.07.2017{, 14:51}

Sancho, для особо одаренных( я про себя) , как пины назначить
Последний раз редактировалось pan 10.07.2017{, 14:52}, всего редактировалось 1 раз.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Пользовательский блок ( Помощь )

#20

Сообщение Sancho » 10.07.2017{, 14:55}

При "изготовлении" пользовательских блоков указанные выше "наборы" лучше определять в функции и потом делать к ним обращения с аргументами. Не запутаешься.

Добавлено (10.07.2017, 14:54)
---------------------------------------------
Например, название
uint ReadRegister(uint8_t address , uint8_t offset)

внутри
Wire.beginTransmission(address);
Wire.write(offset);
Wire.endTransmission();
Wire.requestFrom(address, (uint8_t) 1);
return Wire.read();

Добавлено (10.07.2017, 14:55)
---------------------------------------------
Пины на ардуинке я не пробовал переназначать, не было необходимости.
По умолчанию А4 А5. Сори, исправил
Последний раз редактировалось Sancho 10.07.2017{, 14:57}, всего редактировалось 1 раз.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Ответить

Вернуться в «Спросить у знатоков»