2

我无法使用我正在使用的代码获得一致的结果。我想运行我的 Arduino 一段特定的时间(比如 20 秒),并以特定的采样率(比如每秒四个样本)从模拟引脚收集数据。代码如下。

a_pin = 0;
tic;
i = 0;

while toc < 20
    i = i + 1;
    time(i) = toc;
    v(i) = a.analogRead(a_pin);
    pause(.25);
end

有没有办法将循环设置为运行特定时间,然后以不同的速率在循环样本中运行?

4

3 回答 3

0

单个 Arduino 模拟读取命令的最大采样时间约为 0.04 秒,实际上我会至少达到 0.05。添加两个读取操作的顺序是 2*0.04,实际上更像是 0.1 s。我认为这主要受USB通信速度的限制。

于 2014-01-17T10:09:42.403 回答
0

你可以试试这个:

a_pin = 0;

fs = 4;   % sampling frequency (samplings per second)
mt = 20;  % time for measurements

ind = 1;
nind = 1;
last_beep = 0;
tic;
while toc < mt

    time(ind) = toc;
    v(ind) = a.analogRead(a_pin);

    % wait for appropriate time for next measurement
    while( nind == ind )
        nind = floor(toc*fs) + 1;
    end
    ind = nind;

    % beep every second
    if (ceil(toc) > last_beep)
        beep(); % don't know if this one exist, check docs
        last_beep = ceil(toc);
    end
end 
于 2013-06-22T17:43:43.983 回答
-1

我也是 arduino 的新手,但是在使用它对 EEG 进行实时分析后,在实践中,我能够对 2 个采样频率在 57 到 108Hz 之间的模拟通道进行采样。它非常可变(通过 tic/toc 计算),但在我的情况下它仍然适用于实时处理。

我的代码使用了一个 While 循环、一系列内存更新、数字引脚操作、跟踪图(drawnow)并且似乎运行得足够流畅

我的答案很简单:在我的情况下,采样 2 个模拟输入需要 0.0283 秒。

干杯

于 2014-04-07T06:50:56.850 回答