永发信息网

关于Arduino Serial.print()函数太慢的问题。

答案:1  悬赏:60  手机版
解决时间 2021-02-17 23:36
我要进行高频率的采样,500HZ。也就是2ms采样一次。 为了消除jitter我运用了MsTimer2来interrupt,但是因为采样速度太快,Arduino每次都来不及反应就卡了。请问有什么办法处理这件事。我的要求是2ms读一次A0,然后能记录生成文件就行。
我原来的代码发在下面: 一运行,Serial Port就卡了
#include <MsTimer2.h>
const int INTERVAL = 2;
const unsigned int EVERY = 1000; // 每一千次调用 ppp( )一次
double sum, sss; // 和, 平方和
unsigned long n = 0;
unsigned long m = 0;
void ppp( ) {
int average;
int stdErr;
average = sum / n;
stdErr = sqrt((sss - (sum/n*sum) ) / n );
Serial.print("average:");
Serial.print(average);
Serial.print(" ");
Serial.print("stdErr:");
Serial.print(stdErr);
}
int k;
unsigned int gg=0; // for check
void ggyy() {
k = analogRead(A0);
++n;
sum += k; // 总和
sss += k*k; // 平方和
if(++gg == EVERY){
gg=0; // clear counter
ppp( );
m = millis();
Serial.print("#S|LOGTEST|[");
Serial.print("Time:");
Serial.println(m);
}
}
void setup(){
Serial.begin(9600);
MsTimer2::set(INTERVAL,ggyy);
MsTimer2::start();
}
void loop() {
delay(800000);
MsTimer2::stop(); delay(0); MsTimer2::start();
}
最佳答案
#include <MsTimer2.h>
const int INTERVAL = 2;
const unsigned int EVERY = 1000; // 每一千次调用 ppp( )一次
double sum, sss;   // 和, 平方和
unsigned long n = 0;
unsigned long m = 0;
void ppp( ) {
    int average;
    int stdErr;
    average = sum / n;
    stdErr =   sqrt((sss - (sum/n*sum) ) / n );
    Serial.print("average:");
    Serial.print(average);
    Serial.print(" ");
    Serial.print("stdErr:");
    Serial.print(stdErr);
 }
 int k;
 unsigned int gg=0;  // for check
void ggyy() {
   k = analogRead(A0);
    ++n; 
    sum += k;  // 总和
   sss += k*k; // 平方和
   if(++gg == EVERY){
      gg=0;  // clear counter
      ppp( );
  m = millis();
  Serial.print("#S|LOGTEST|[");
  Serial.print("Time:");
  Serial.println(m);
}
}
void setup(){
  Serial.begin(9600);
  MsTimer2::set(INTERVAL,ggyy);
  MsTimer2::start();
}
void loop() {
  delay(800000);
  MsTimer2::stop(); delay(0); MsTimer2::start();
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
大话西游手游男人怎么提升速度
读图,回答问题。(1)七年级6班开展野外登山
中国哪里有玉石(原石)市场
请问动物世界在哪个台播出几点?谢谢!
平躺手指按腹部疼,按侧面比中间疼走路坐着都
马龙县曲一中录取分数线
白虎汤的功用是A.辛寒清气泻火B.苦寒直折火热
奶牛梦工场金科·十年城店在什么地方啊,我要
药流规定放假几天
有哪些描写17、18世纪西方上流社会家居生活的
斗鱼陈一发儿的羞耻30秒黑历史 陈一发真名年
刚才我想用话费购买QB冲了400元话费才发现充
大棚小凤西瓜多长时间成熟
maxinu时尚馆地址有知道的么?有点事想过去
梦见自己家着火
推荐资讯
蔡甸区武汉市蔡甸区鑫夏泰齐电脑经营部地址在
福来泉酒店地址在什么地方,想过去办事
孩子惹你生气了怎么办?
37年年三十出生阴年是多少号
我要初三毕业了,英语作文my life new plan不
创维电视凤凰城旗舰店在什么地方啊,我要过去
豌豆花是什么植物
某家庭中,丈夫正常,妻子患有某种单基因遗传
下列属于描述性研究的基本要求的是
向日葵训练中心这个地址在什么地方,我要处理
求茎之吻的全部小说 ,或者其他
大丰市里网吧通宵一般都多少钱
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?