Arduino可以以微秒为单位采样1-4 kHz的音频吗?

use*_*971 5 signal-processing arduino frequency sampling

我刚刚将一个驻极体麦克风连接到Arduino,我想在1 kHz和4 kHz 之间进行采样  .

我知道这仅限于机器代码和ADC,所以我试图保持草图简单.

是否可以使用下面的草图在这些频率之间进行采样?

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)

r_a*_*kog 0

我听说过,或者更确切地说记得读过,ADC 每秒可以处理高达 10k 样本,因此高达 5 kHz 应该没问题。但是,我还没有尝试过,目前也没有支持它的链接。

试试看吧。

现在我知道一些 Arduino 库函数很慢,尤其是 DigitalRead/Write,其开销高达数百个周期。其中大部分是健全性检查,允许人们只执行数字读/写,而无需考虑太多设置一切。

然而,为了发挥最大性能,您可以考虑编写自己的针对您的用例进行优化的 AnalogRead。

至少有一些关于该主题的链接: