Точные показания с датчика (микрофон)
- Войдите на сайт для отправки комментариев
Вс, 20/12/2015 - 10:29
Всем доброго времени суток! Нужна помощь в программировании. Собираюсь выводить показания микрофона с предусилителем на монитор порта, создал такой код:
float analogPin = 0;
float val = 0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
val = analogRead(analogPin);
Serial.println(val,BIN);
delay(1000);
}
В состоянии покоя датчик выдаёт значения 18.00 или 19.00. Если подуть, то 20.00 и выше. Проблема заключается в том, что значения всегда целые. Неужели всё так идеально? Хотелось бы, что бы выводилась и дробная часть чисел ( кроме .00 ).
аналоговый порт может отдавать значения в диапозоне 0..1023
А как можно сделать так, чтобы отдавались ещё и дробные значения?
А как можно сделать так, чтобы отдавались ещё и дробные значения?
можно , но зачем вам 0,000 ...... 1023,000 ?
Хотелось бы, что бы выводилась и дробная часть чисел ( кроме .00 ).
Вы смотрели какой тип возвращает analogRead?
Если Вам так уж хочется видеть дробные части, преобразуйте к float и поделите не 204,6 - получите напряжение в вольтах (приблизительно :))))
получите напряжение в вольтах (приблизительно :))))
раз в секунду и в тот момент , когда опрашивается пин микрофона....
получите напряжение в вольтах (приблизительно :))))
раз в секунду и в тот момент , когда опрашивается пин микрофона....
Так ото ж! :)
void loop()
В состоянии покоя датчик выдаёт значения 18.00 или 19.00. Если подуть, то 20.00 и выше. Проблема заключается в том, что значения всегда целые. Неужели всё так идеально? Хотелось бы, что бы выводилась и дробная часть чисел ( кроме .00 ).
Начнем с конца, хотя это здесь и не самое интересное.
АЦП всегда выдает целые числа. Т.е. дробной части нет. Совсем. По определению. В дальнейшем их при необходимости можно тем или иным способом превратить в дробные, но это уже вопрос целесообразности.
А теперь - самое интересное.
Микрофон обычно имеет рабочий диапазон в районе от 20 Гц до 20 кГц. Т.е. способен фиксировать только переменный ток. Вы же делаете измерения раз в секунду, т.е. по теореме Котельникова-Шеннона можете измерить сигнал в диапазоне частот от 0 до 0.5 Гц. Т.е. по сути постоянный ток.
Другими словами, аппараттура работает в одном диапазоне частот, а программа - совершенно в другом. Следовательно, ничего полезного из такого способа измерения невозможно получить в принципе.
Вы бы описали исходную задачу, тогда, возможно, совместными усилиями удалось бы составить хотя бы приблизительное технически непротиворечивое ТЗ на нее. Потому как сейчас существо задачи для присутствующих непонятно, а предложенный вариант решения заведомо непригоден (т.к. он не пригоден вообще для решения ни одной задачи).
andriano , может быть совсем не так ?
это не оцифровка сигнала... Котельников здесь не при чём....
код фиксирует в момент опроса напругу от микрофона , всего-то
он не пригоден вообще для решения ни одной задачи
пригоден ! для определения уровня сигнала с микрофона выше заданного....
andriano , может быть совсем не так ?
это не оцифровка сигнала... Котельников здесь не при чём....
код фиксирует в момент опроса напругу от микрофона , всего-то
он не пригоден вообще для решения ни одной задачи
пригоден ! для определения уровня сигнала с микрофона выше заданного....
Не пригоден.
Сигнал с микрофона - переменный ток.
Уровенеь сигнала - его среднеквадратичное отклонение от некоторонго постоянного значения, называемого постоянной стсоставляющей.
Не пригоден, минимум, по двум причинам:
1. Отклонение может быть как в плюс, так и в минус.
2. Мгновенное значение ничего не говорит о среднеквадратичной величине.