use*_*971 5 signal-processing arduino frequency sampling
我刚刚将一个驻极体麦克风连接到Arduino,我想在1 kHz和4 kHz 之间进行采样 .
是否可以使用下面的草图在这些频率之间进行采样?
const int analogPin = 0;
int ledPin = 13;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
int mn = 1024;
int mx = 0;
for (int i = 0; i < 5; ++i) {
int val = analogRead(analogPin);
mn = min(mn, val);
mx = max(mx, val);
}
if (mx-mn >= 50) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}
}
Run Code Online (Sandbox Code Playgroud)
我听说过,或者更确切地说记得读过,ADC 每秒可以处理高达 10k 样本,因此高达 5 kHz 应该没问题。但是,我还没有尝试过,目前也没有支持它的链接。
试试看吧。
现在我知道一些 Arduino 库函数很慢,尤其是 DigitalRead/Write,其开销高达数百个周期。其中大部分是健全性检查,允许人们只执行数字读/写,而无需考虑太多设置一切。
然而,为了发挥最大性能,您可以考虑编写自己的针对您的用例进行优化的 AnalogRead。
至少有一些关于该主题的链接:
引脚 I/O 性能(JeeLabs)
用于更快访问的 C++ 模板方法(JeeLabs)