Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino 在一秒钟内测量ADC采样的最大速率_Arduino - Fatal编程技术网

Arduino 在一秒钟内测量ADC采样的最大速率

Arduino 在一秒钟内测量ADC采样的最大速率,arduino,Arduino,是否有人有一个代码片段来测量一秒钟内可达到的最大ADC采样率。我知道Arduino中有一个millis()函数 unsigned long start, finsihed, elapsed; void setup() { Serial.begin(115200); } void loop() { int sensorVal = analogRead(A0); Serial.println(sensorVal); Serial.println("Start..."); st

是否有人有一个代码片段来测量一秒钟内可达到的最大ADC采样率。我知道Arduino中有一个millis()函数

unsigned long start, finsihed, elapsed;

void setup() {
  Serial.begin(115200);
}

void loop() {
  int sensorVal = analogRead(A0);
  Serial.println(sensorVal);
  Serial.println("Start...");
  start = millis();
  Serial.println("Finished");
  elapsed = finished - start;
  Serial.print(elapsed);
  Serial.println(" milliseconds elapsed");
  Serial.println();
}

如果您试图计算出一秒钟内处理和ADC的最大次数,那么除了每次打印一个值外,您可能还应该尝试其他方法

例如,您可以使用一个For循环,该循环每读取10000次就计数一次,例如

start = millis()
for(int i = 0; i < 10000; i++){
     analogRead(A0);

}
finish = millis()
total = start - finish
print("This trail took ");
print(total);
print(" miliseconds!");
start=millis()
对于(int i=0;i<10000;i++){
模拟读数(A0);
}
finish=millis()
总计=开始-结束
印刷品(“这条线索”);
印刷品(总数);
打印(“毫秒!”);

巧合的是,10000是数据表告诉您arduino每秒可以运行模拟读取的次数

数据表显示为15kSps。这种价值观对你没有好处吗?只是认真练习和学习。这就是我想知道的。只需设置最大速率并检查溢出。然后使用二等分降低,直到溢出刚好消失。在循环中读取ADC样本在大多数情况下都是一个坏主意,因为样本的间隔很难相等。对于reming用例,最大速率没有实际的interest,因为它们的间隔不是相等的。当然,使用millis()。不,你不能测量A/D比率,你只能测量报告比率。这在很大程度上取决于串行端口波特率。这很好,那是你唯一真正关心的。这也是在电线的另一端这样做的一个很好的理由。