极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 16708|回复: 8

编程问题

[复制链接]
发表于 2017-4-7 09:58:05 | 显示全部楼层 |阅读模式
根据这段话来控制呼吸传感器信号的输出
Every 1ms collect one analog signal reading (ADC is 10-bit, giving values in the range 0 to
1023)
Integrate collected analog signal readings to reduce noise. Sum 25 readings.
If sum is less than 1500 (low reading), then try to increase the gain by multiplexing between
different feedback resistors using Arduino digital outputs 22, 24, 26 or 28.
If sum is more than 14800 (high reading), then try to reduce the gain by multiplexing between
different resistors using Arduino digital outputs 22, 24, 26 or 28.
Every 100ms send the reading over Bluetooth (write to Arduino UART output)  
下面是我编的程序,大神们看看问题出现在哪里

[kenrobot_code]int val;//定义一个变量
int pin1=2;//增益选择开关通道接入的引脚
int pin2=3;
int pin3=4;
inputPin=A0;//模拟输入引脚
int sum=0;//定义求和变量
int sensorVal;//定义一个变量
void setup() {
Serial.begin(9600);//设定串口的通讯速率
pinMode(inputPin,INPUT);//定义模拟引脚为输入
for(int i=2;i<=4;i++){
  pinMode(i,OUTPUT);//定义增益选择开关通道接入的引脚为输出
}
}
void loop() {
  for(int i=0;i<=24;i++)
  {
  val=analogRead(A0);
  delay(1);
  sum+=val;//读取模拟端口的值25次并求和
  }
sensorVal=sum;
  if(sensorVal<1500){
    digitalWrite(pin1,HIGH);//判断25次求和后的值小于1500时,给增益选择通道引脚2高电平,然后每隔100毫秒输出模拟端口的值
    delay(100);
    Serial.println(val);
  }
  if(sensorVal>14800){
    digitalWrite(pin3,HIGH);
    delay(100);
    Serial.println(val);//判断25次求和后的值大于14800时,给增益选择通道引脚4高电平,然后每隔100毫秒输出模拟端口的值
  }
  else{
    digitalWrite(pin2,HIGH);
    delay(100);
    Serial.println(val);//判断25次求和后的值大于1500小于14800时,给增益选择通道引脚3高电平,然后每隔100毫秒输出模拟端口的值
  }
}[/kenrobot_code]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2017-4-7 13:57:52 | 显示全部楼层
这个程序没看出来什么问题,输出结果有什么问题?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-7 15:02:26 | 显示全部楼层
弘毅 发表于 2017-4-7 13:57
这个程序没看出来什么问题,输出结果有什么问题?

我写的程序符合上面要求的那段话吗?当人体呼吸后输出的结果数值上升后就保持不变,当应该是呼吸停止时其数值回到初始状态
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-7 15:05:24 | 显示全部楼层
A67 发表于 2017-4-7 15:02
我写的程序符合上面要求的那段话吗?当人体呼吸后输出的结果数值上升后就保持不变,当应该是呼吸停止时其 ...

别人有说到是对于时序和滤波有要求的,这里不是很懂,从我写的程序上看并没有看到什么时序和滤波,大神能够回复帖子很感动
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-7 16:01:43 | 显示全部楼层
A67 发表于 2017-4-7 15:05
别人有说到是对于时序和滤波有要求的,这里不是很懂,从我写的程序上看并没有看到什么时序和滤波,大神能 ...

这是输出的结果,那个高峰是由于人的呼吸所引起的,弘毅老师,请问怎么把其他的一些小峰及噪声给去除掉啊

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2017-4-7 16:13:11 | 显示全部楼层
你这个看的很晕。。。都不知道你接的什么东西
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-7 22:03:56 | 显示全部楼层
弘毅 发表于 2017-4-7 16:13
你这个看的很晕。。。都不知道你接的什么东西

上面的接线可以不用看,就是连接了Arduino单片机的5V,3.3V,GND,VIN,A0,数字接口2,3,4;根据上面那段英文,我编写的程序有问题吗?老师知道我所得出的结果我想留下这几个突出的波峰,其他小的波峰去除怎么编程解决啊
回复 支持 反对

使用道具 举报

发表于 2017-4-8 09:15:10 | 显示全部楼层
请把呼吸传感器放上来看看,传感器原理都不知道,怎么滤波嘛。。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-8 09:53:01 | 显示全部楼层
迷你强 发表于 2017-4-8 09:15
请把呼吸传感器放上来看看,传感器原理都不知道,怎么滤波嘛。。。。

原理图在上面
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 04:37 , Processed in 0.042557 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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