Комментарии 12
float cos = pgm_read_float(&(cos_t[k]));
float sin = pgm_read_float(&(sin_t[k]));
Пожалуй не очень хорошая идея называть переменные именами функций из стандартной сишной библиотеки.
Думать, "хватит ли производительности Arduino" (изначально известно, что есть запас раз в 5 минимум: в 90-е АОН делался на Z80, требуемая обработка пракически та же) и при этом использовать float? Немного странно.
Причём в тех АОНах даже АЦП не было. Звук пропускался через компаратор и дальше обрабатывался в однобитном виде. А в качестве умножения использовался самый обыкновенный XOR.
И z80 тоже избыточен. Dtmf decoder делал на 400 килогерцовом 4-битном контроллере, в 92 году. Самой большой проблемой был не Dtmf, а обычный программный uart из-за отсутствия высокочастотного кварца. Приходилось перекалибровывать генератор по часовому кварцу перед каждым сеансом или при ошибке. Естественно прозрачно для пользователя
А я то думал что автор скажет «один» — и ардуина высветит 1. А тут банальный DTMF, а вовсе не «определение цифры на слух» :(
Для ускорения от конечного sqrt можно же отказаться? И затем сравнивать с квадратом threshold.
Все это замечательно, но как на счет оцифровки мыслей? Там вроде уже есть какие-то продвижения, а если бы были мыслезаписи, как бы это могло изменить наш мир.
А что если по dtmf прошивку обновлять? Какая битовая скорость получается?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Определение цифры на слух: реализация на Arduino