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

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

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

Сообщение Uapaha74 »

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

Начал пытаться делать пользовательский блок по видео уроку [spoiler=Спойлер]_uVideoPlayer({'url':'https://www.youtube.com/watch?v=tYRF1fH ... 14Bv1DeDFH');[/spoiler]Блок FFT (от «fast Fourier transform», что значит «быстрое преобразование Фурье» )
Я с ардуино, знаком минимально, но блок такой край как нужен. 
Сил а по большей части знаний, хватило дойти до: Изображение
И тут для меня  оказался тупик :(Да и не у верен я, что предыдущие вкладки были заполнены правильно  (Declare,Setup,Loop) 

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

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

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

Подробное описание Arduino:Библиотеки/FFT
Аватара пользователя
Dev1
Майор
Сообщения: 1045
Зарегистрирован: 12 июл 2016, 18:04
Откуда: Гондурас
Поблагодарили: 3 раза

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

Сообщение Dev1 »

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

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


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

Добавлено (27.05.2017, 19:01)
---------------------------------------------
Цикл while
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64 FLProg v8.2.3 Portable IDE 1.8.19, 2,x,x :shok:
Аватара пользователя
Uapaha74
Рядовой
Сообщения: 20
Зарегистрирован: 04 окт 2015, 11:01

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

Сообщение Uapaha74 »

Dev1 писал(а):Тут сразу видно что не хватает - }
Да   так  и есть но вот как заполнить эту вкладку ? -Изображение
Чем ? что туда писать ? ( простите за скудоумие Для меня это Эверест ! ))
Аватара пользователя
Dev1
Майор
Сообщения: 1045
Зарегистрирован: 12 июл 2016, 18:04
Откуда: Гондурас
Поблагодарили: 3 раза

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

Сообщение Dev1 »

Uapaha74 писал(а):Чем ? что туда писать ?
Ничего не писать. Это для отдельных функций, которые вызываете в void loop.  В примере нету отдельных функций.
Win10-64 FLProg v8.2.3 Portable IDE 1.8.19, 2,x,x :shok:
Аватара пользователя
Uapaha74
Рядовой
Сообщения: 20
Зарегистрирован: 04 окт 2015, 11:01

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

Сообщение Uapaha74 »

Dev1, Как мне тогда прикрепить эту функцию "(fft_log_out);// отсылаем данные" к выходу "log" пользовательского блока 
Изображение
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

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

Сообщение rw6cm »

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

п\с Всегда старался обходить стороной теоретиков,
сегодня с утреца на свежую голову решил восполнить пробел...
То хоть какое то имел представление - теперь сплошное месиво )))
Win10-64, FLProg (portable)
Аватара пользователя
Dev1
Майор
Сообщения: 1045
Зарегистрирован: 12 июл 2016, 18:04
Откуда: Гондурас
Поблагодарили: 3 раза

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

Сообщение Dev1 »

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

Добавлено (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 v8.2.3 Portable IDE 1.8.19, 2,x,x :shok:
Аватара пользователя
Uapaha74
Рядовой
Сообщения: 20
Зарегистрирован: 04 окт 2015, 11:01

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

Сообщение Uapaha74 »

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 фев 2017, 12:23

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

Сообщение AVGN »

Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн
Аватара пользователя
Uapaha74
Рядовой
Сообщения: 20
Зарегистрирован: 04 окт 2015, 11:01

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

Сообщение Uapaha74 »

Примерно такое решение я и хотел бы видеть в пользовательском блоке.
Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03 фев 2017, 12:23

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

Сообщение AVGN »

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

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

Сообщение Uapaha74 »

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 май 2017, 20:16, всего редактировалось 1 раз.
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

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

Сообщение rw6cm »

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

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

Сообщение Uapaha74 »

rw6cm писал(а):Будет время для интереса попробую.
Буду очень благодарен!
pan
Полковник
Сообщения: 2860
Зарегистрирован: 13 апр 2017, 11:57
Имя: noname

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

Сообщение pan »

может кто подсказать по использованию программного i2c ? пните в нужном направлении )
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

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

Сообщение Sancho »

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 июл 2017, 14:24, всего редактировалось 1 раз.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
pan
Полковник
Сообщения: 2860
Зарегистрирован: 13 апр 2017, 11:57
Имя: noname

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

Сообщение pan »

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

Добавлено (10.07.2017, 14:44)
---------------------------------------------
блин проглядел. сори
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

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

Сообщение Sancho »

Не совсем понял вопрос.
I2c в ардуино на А4,А5 аналогична в работе serial0, также в setup Wire.begin(); как и Serial.begin(115200);
Глубже не копал...
Последний раз редактировалось Sancho 10 июл 2017, 14:57, всего редактировалось 1 раз.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
pan
Полковник
Сообщения: 2860
Зарегистрирован: 13 апр 2017, 11:57
Имя: noname

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

Сообщение pan »

Sancho, для особо одаренных( я про себя) , как пины назначить
Последний раз редактировалось pan 10 июл 2017, 14:52, всего редактировалось 1 раз.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

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

Сообщение Sancho »

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

Добавлено (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 июл 2017, 14:57, всего редактировалось 1 раз.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Ответить

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей