Формулы для получения звука сирены

Здесь принимаются все самые невообразимые вопросы... Главное - не стесняйтесь. Поверьте, у нас поначалу вопросы были еще глупее :)
Ответить
STARпёр
Открыл глаза
Сообщения: 55
Зарегистрирован: Чт окт 18, 2018 23:58:43

Формулы для получения звука сирены

Сообщение STARпёр »

Всем привет!
Самоизоляция, свободное время... Модельки автомобилей...
Решил сделать сирену на микроконтроллере. Даже работает, но форму сигнала приходится выдавать по таблице.
В итоге при низком тоне слышна ступенчатость тона, т.е. он не плавно меняется, а как будто перещёлкивается всё ниже и ниже.
Вывод по таким значениям:
Изображение
Изображение

И вот задался вопросом... а нет ли формулы по которой можно было бы просчитать такой сигнал и выдавать более плавные изменения?
Никому не наводят на мысли такие графики? Может кто-то навскидку подкинет формул?
Вложения
2.jpg
(15.74 КБ) 209 скачиваний
1.jpg
(23.28 КБ) 212 скачиваний
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Re: Формулы для получения звука сирены

Сообщение Ivanoff-iv »

а линейно интерполировать? не? я набором фомул вида
x0<x<x1: y=k0x+b0
x1<x<x2: y=k1x+b1
x2<x<x3: y=k2x+b2
только в bn подставляю значение обеспечивающее непрерывность функции (это несложная математика)
даже синус вполне правдоподобный рисовал...

Добавлено after 1 minute 30 seconds:
да это будет ломаная... зато без ступенек, но на слух это будет неощутимо в отличие от ступенек.
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Аватара пользователя
El-Eng
Друг Кота
Сообщения: 3747
Зарегистрирован: Чт янв 26, 2012 14:44:34

Re: Формулы для получения звука сирены

Сообщение El-Eng »

Если есть опорные точки, хорошо подойдет, например, интерполяция полиномом Лагранжа, его довольно легко считать.
Like the eyes of a cat in the black and blue...
STARпёр
Открыл глаза
Сообщения: 55
Зарегистрирован: Чт окт 18, 2018 23:58:43

Re: Формулы для получения звука сирены

Сообщение STARпёр »

El-Eng
Интересный вариант, но я так понимаю нужны переменные с плавающей точкой, для простых МК может оказаться туго пересчёт делать в реалтайме...
Аватара пользователя
El-Eng
Друг Кота
Сообщения: 3747
Зарегистрирован: Чт янв 26, 2012 14:44:34

Re: Формулы для получения звука сирены

Сообщение El-Eng »

STARпёр писал(а):... я так понимаю нужны переменные с плавающей точкой...
Вообще-то не обязательно, все зависит от порядка и коэффициентов полинома. Но и в операциях с плавающей точкой нет ничего ужасного: интервал между изменением тона вряд ли нужен меньше 10 миллисекунд, для AVR с тактовой частотой в 10 МГц это порядка 50000 команд, считая в среднем по 2 такта на команду, - этого вполне хватит, чтобы спокойно считать полином 2-3 (а, скорее всего, и большего) порядка, еще и на другие операции останется.
Я бы посоветовал попробовать в лоб, скажем, на Ардуино, благо там и контроллер уже готов, и язык С есть.

P.S. Можно и не связываться с полиномами. Если закодировать ступень изменения тона одним байтом, то на 10-секундный интервал без повторений с шагом в 10 миллисекунд уйдет 1 килобайт памяти - не так уж и много.
Like the eyes of a cat in the black and blue...
STARпёр
Открыл глаза
Сообщения: 55
Зарегистрирован: Чт окт 18, 2018 23:58:43

Re: Формулы для получения звука сирены

Сообщение STARпёр »

[uquote="El-Eng",url="/forum/viewtopic.php?p=3852251#p3852251"]вполне хватит, чтобы спокойно считать полином 2-3 (а, скорее всего, и большего) порядка.[/uquote]
Да, как вариант. Ещё плюс такой конструкции в том, что табличных точек надо меньше. И можно экспериментировать со звуками двигая точки. Благодарю за идею!

Хотя конечно поглядеть на формулу для таких сигналов интересно посмотреть, вдруг кто сталкивался)
Аватара пользователя
El-Eng
Друг Кота
Сообщения: 3747
Зарегистрирован: Чт янв 26, 2012 14:44:34

Re: Формулы для получения звука сирены

Сообщение El-Eng »

STARпёр писал(а):Благодарю за идею!
Пожалуйста! :beer:
Like the eyes of a cat in the black and blue...
Ответить

Вернуться в «Теория»