开启左侧

【培训作品】懂你健康盒子_陈阜东 卓凌颖

[复制链接]
发表于 2018-1-3 11:26:26 | 显示全部楼层 |阅读模式
作品简介:
现代人工作强度大,对健康重视,想通过arduino做一个关注健康,检测健康的产品。
目标:检测 体温、脉搏,显示出来,超出某些值时提示:灯或声音
用到传感器:
1、脉搏传感器:根据手指脉搏跳动对传感器光敏组件的测试值进行测量
2、温度传感器
输出:声音、显示屏、蜂鸣器
功能说明:身体检查,测 指尖温度、脉搏  (每个状态插图说明)
1、 启动时,显示器okready”,等待按钮开始
2、 按钮启动后,一手捏温感,一手捏脉搏传感器。显示器显示倒计时20S,这时在收集数据。
3、 当时间到时,数据收集完毕并及时处理,输出有:
液晶屏显示:Temp is
                      “pluse is” 和数据
并根据数据做出诊断  3次和闪三次
               温度>37.5,  闪 红灯,并说“工作辛苦了”
                      否则     闪绿灯,说“身体健康”
              脉搏>96, 闪黄灯,说“现在请慢走”
4、 接着等待,若再次按下“按键”,可 重新开始

程序代码:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);     //lcd
const int wenduPin = A1;   //温度数值输入口
const int maiboPin = A0;   //脉搏传感器输入
float wendu = 0;    //获得的温度
float wendupj = 0; //温度输出的平均
float wendusum = 0;  //温度求和
float maibo = 0;
float maibopj = 0;
float maibosum = 0;
int kaiguanValue = 1; //按键开关,默认1为放松
int i;   //检测数据收集次数
const int greenLedPin1 = 6;  //绿色LED灯连接引脚6
const int yellowLedPin1 = 5;  //黄色LED灯连接引脚5
const int redLedPin1 = 4;  //红色LED灯连接引脚4
const int Rst = 11;           //语音模块5脚,这三脚的位置
const int Data = 12;
const int Busy = 13;
int j = 0;     //结果出来时,语音、灯光次数
void setup() {
  Serial.begin(115200);
  lcd.init();           // initialize the lcd
  lcd.backlight();     //LED背灯
  pinMode(7, INPUT);   //按钮设置在7号口
  pinMode(greenLedPin1, OUTPUT);     //设置引脚6为输出模式
  pinMode(yellowLedPin1, OUTPUT);     //设置引脚5为输出模式
  pinMode(redLedPin1, OUTPUT);     //设置引脚4为输出模式
  pinMode(Rst, OUTPUT);    //语音输出引脚
  pinMode(Data, OUTPUT);
  pinMode(Busy, INPUT);
}
void loop() {
//初始化部分
  kaiguanValue = 1;
  kaiguanValue = digitalRead(7);
  digitalWrite(redLedPin1, LOW);    //之前的灯灭掉
  digitalWrite(greenLedPin1, LOW);
  digitalWrite(yellowLedPin1, LOW);
  wendupj = 0;
  maibopj = 0;         //第二次用前要清零,不然平均值会累加
  wendusum=0;
  maibosum=0;
  while (kaiguanValue == 1)   //先显示“ok?”
  { lcd.print("ok? ready: ");
    lcd.init();
    Serial.println(kaiguanValue);
    kaiguanValue = digitalRead(7);     //很重要,不然跳不出来
  }
  
//检测部分
  
  if (kaiguanValue == 0)       //检测阶段
  { for ( i = 1; i <= 20; i++)
    { wendu = (125 * analogRead(wenduPin)) >> 8; //Lm35 温度传感器的计算公式。无手温度时为:26.70 28.55
      // if ( wendu<42)    // 超过42 无效?不能这样,导致加的数不到20,后面平均值太低
      wendusum = wendusum + wendu;       //取最大值
      maibo = analogRead(maiboPin);
      maibosum = maibosum + maibo; //累加,循环结束后平均
      lcd.init();
      lcd.print("wait ");
      lcd.print(20 - i); lcd.print(" s ");    //倒计时
      Serial.print(wendu);
      Serial.print("  ");
      Serial.println(maibo);
      delay(500);//测试时快点
    }
  }
  //结果输出部分
  kaiguanValue = digitalRead(7);//获取按键值
  while (kaiguanValue == 1)   //停在这里,直到再按一次
  {
    wendupj = wendusum / 20; //获得平均值,可以
    maibopj = maibosum / 20/10; //maibo,这样不太行//需要脉搏检测值与终值表达式./10,凑数据的
    Serial.print(wendupj);
    Serial.print("   ");
    Serial.println(maibopj );
    lcd.print("temp is ");
    lcd.print(wendupj);
    lcd.print(" ");
    lcd.setCursor(1, 1); //将闪烁的光标设置到column 0, line 1 (注释:从0开始数起,line 0是显示第一行,line 1是第二行。)
    lcd.print("pluse is ");
    lcd.print(maibopj);
    lcd.init();
   


FullSizeRender_1_.jpg
FullSizeRender_2_.jpg
IMG_7520.JPG
IMG_7523.JPG
IMG_7527.JPG

zonghezupin.ino

4.29 KB, 下载次数: 0

回复

使用道具 举报

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

本版积分规则

精彩课程推荐

关于我们

帮助中心

商务合作

点击这里给我发消息

关注微信公众号

Copyright © 2016-2017 i创学院 - 上海享渔教育科技有限公司 Powered by Discuz!     ( 沪ICP备16033954号-1 )