Добрый день уважаемые форумчане. Не давно стал обладателем датчика звуков, а именно: http://amperka.ru/collection/sensors/product/microphone. Попробовал его подключить без дополнительных плат расширения и узнал что он работает только с аналоговыми портами, что в принципе не то что бы удивительно. Но возникает вопрос, как можно сделать так чтобы программа сразу реагировала на произошедший звук? Как помнится Arduino Uno не поддерживает прерывания на аналоговых портах, а если считывать показания датчика раз в какое-то время то можно и упустить событие....... И еще может кто знает в каком диапазоне датчик может возвращать значения? Мне не удалось добиться того что бы он вернул больше 179. Заранее спасибо за помощь.
Подключите его к цифровому входу и настройте на максимальное усиление, если сигнал хоть где-то будет превышать пороговое значение, прерыванием это событие поймаете. Вполне возможно, что при опросе АЦП с выдачей в тпрминал пиковые значения пропускаются.
А как включить максимальное усиление? Когда я подключал его к 3 порту и пытался по любому входящиму сигналу зажечь диод то у меня ничего не получилось.......
Там на плате сенсора есть потенциометр (синий такой кубик), сверху серый кружок регулятора с крестовым пазом. Поверните его отверткой в крайнее положение: на плате есть подписи min и max, по ним ориентируйтесь, на фото max в направлении против часовой стрелки.
Проверил этот вариант, так он действительно стал срабатывать. Но работает почему-то через раз. При чем если издавать звук где-то с 1.5 мета может сработать, а с 0.2 может проигнорировать, даже если микрофон направлен в нужную сторону. Может кто подскажет как можно улучшить его работу или посоветует какой-нибудь другой девайс. И еще появился вопрос, если я подключаю микрофон к порту 3 который поддерживает ШМИ могу ли я узнать какие значения на него были переданы? Или там будет только 1?
А может попробуете таки аналоговые порты? Хотя по идее должно работать и так (на всякий случай - вот статья о том как быстро работать с ацп http://wiki.amperka.ru/сенсоры:microphones_plus_servoprivod)
За статью огромное спасибо))) Я просто еще думаю может у меня датчик бракованный, т.к. вчера весь вечер с ним провозился и эффекта удалось достичь только когда я в него дул, на звуки он реагировать отказывался.
Ну что ж у всех то всё сразу бракованное?) Подрубите к ацп, загрузите скетч какой, типа AnalogIOutSerial и смотрите в терминале, как реагирует микрофон. Ну и настройку усиления покрутите - посмотрите, как чего меняется. Еще можно график начертить изменения звука - вот через такую прогу, например https://sites.google.com/site/terminalbpp/ - наглядно видно будет, как модуль на звуки реагирует
Спасибо, попробую)) У меня еще вопрос напрашивается, смотрю подключение везде происходит через платы расширения, а я просто к контактам подключаю, может быть в этом проблема?
Смотрите не просто на значения, а на пиковые значения. Снимите подряд много-много отсчетов и посчитайте по ним Vrms, Vmin, Vmax, Vpp, Vavg, прикиньте с какой частотой нужно снимать отсчеты для надежного детектирования сигнала. Сделаете буфер в несколько килобайт, пишите в него побайтово Vadc/4 или min(Vadc,255), потом считайте по буферу L1 или L2 норму.