极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15158|回复: 3

如何在运行程序后采集传感器上某段时间的数据

[复制链接]
发表于 2016-10-21 11:51:02 | 显示全部楼层 |阅读模式
这是连续采集传感器数据的代码,我想采集某个时间段的数据应该怎么写啊?就是判断那一时间段的数据,然后执行其他事件,不影响传感器数据的连续采集。

unsigned char Re_buf[11],counter=0;
unsigned char sign=0;
int r=1;
float A,a[3],w[3],angle[3],T;
void setup() {
  // initialize serial:
  Serial.begin(115200);
}

void loop() {
  serialEvent();
  if(sign)
  {  //Serial.println(r);
     sign=0;
     if(Re_buf[0]==0x55)      //检查帧头
     {  
        switch(Re_buf [1])
        {
        case 0x51:
                a[0] = (short(Re_buf [3]<<8| Re_buf [2]))/32768.0*16;
                a[1] = (short(Re_buf [5]<<8| Re_buf [4]))/32768.0*16;
                a[2] = (short(Re_buf [7]<<8| Re_buf [6]))/32768.0*16;
                T = (short(Re_buf [9]<<8| Re_buf [8]))/340.0+36.25;
                 
                break;
        case 0x52:
                w[0] = (short(Re_buf [3]<<8| Re_buf [2]))/32768.0*2000;
                w[1] = (short(Re_buf [5]<<8| Re_buf [4]))/32768.0*2000;
                w[2] = (short(Re_buf [7]<<8| Re_buf [6]))/32768.0*2000;
                T = (short(Re_buf [9]<<8| Re_buf [8]))/340.0+36.25;
                break;
        case 0x53:
                angle[0] = (short(Re_buf [3]<<8| Re_buf [2]))/32768.0*180;
                angle[1] = (short(Re_buf [5]<<8| Re_buf [4]))/32768.0*180;
                angle[2] = (short(Re_buf [7]<<8| Re_buf [6]))/32768.0*180;
                T = (short(Re_buf [9]<<8| Re_buf [8]))/340.0+36.25;
                Serial.print("a:");
                A=sqrt(a[0]*a[0]+a[1]*a[1]+a[2]*a[2]);
                Serial.print(A);Serial.print(" ");
               
                Serial.print("angle:");
                Serial.print(angle[0]);Serial.print(" ");
                Serial.print(angle[1]);Serial.print(" ");
                Serial.println(angle[2]);
                break;
                delay(5);
              
        }
    }
  }
}

void serialEvent() {
  while (Serial.available()) {
   
   
    Re_buf[counter]=(unsigned char)Serial.read();
    if(counter==0&&Re_buf[0]!=0x55) return;               
    counter++;      
    if(counter==11)           
    {   
       counter=0;            
       sign=1;
    }
      
  }
}

回复

使用道具 举报

发表于 2016-10-21 14:24:36 | 显示全部楼层
你用的串口输出的六轴模块吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-21 15:09:04 | 显示全部楼层
antbot 发表于 2016-10-21 14:24
你用的串口输出的六轴模块吗?

是的,我是做人体跌倒报警的  现在只是检测到加速度和角度
回复 支持 反对

使用道具 举报

发表于 2016-10-21 15:34:44 来自手机 | 显示全部楼层
不明白你想做什么。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-10 04:04 , Processed in 0.034353 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表