基于arduino的心率检测仪
这是一款采用AD8232作为心电监测芯片,它能在具有机械运动或远程放置所产生干扰的情况之下,提取、放大、过滤得到极弱的生物电信号。采用Arduino ATmega328作为主控制芯片,LCD1602液晶屏作为显示屏,使用锂电池供电,并设计TP4056充电板,为保护电源电路,还为锂电池供电增加了由DW01和8205A组成的电源保护电路,具有较好的便携性和稳定性。通过与某米的手环对比,误差在2-10次/min之间,想必是本人学艺不精的原因。程序如下:
- #include <Wire.h>
- #include <LiquidCrystal_I2C.h> //引用I2C库
- //设置LCD1602设备地址,这里的地址是0x3F,一般是0x20,或者0x27,具体看模块手册
- LiquidCrystal_I2C lcd(0x3F, 16, 2);
- unsigned int data[500], i, count, total[6], num, total1;
- int m, n = 0;
- void setup()
- { lcd.init(); // 初始化LCD
- lcd.backlight(); //设置LCD背景等亮
- Serial.begin(9600);
- lcd.setCursor(0, 0); //设置显示指针
- lcd.print("HeartRate"); //输出字符到LCD1602上
- }
- void loop()
- {
- if (n == 0)
- {
- delay(1000);
- }
- Serial.println(millis());
- for (i = 0; i < 500; i++)
- {
- data[i] = analogRead(A0);
- //Serial.println(data[i]);
- // send the value of analog input 0:
- //Wait for a bit to keep serial data from saturating
- delay(20);
- }
- for (i = 1; i < 500; i++)
- {
- m = abs(data[i] - data[i - 1]);
- // Serial.println(abs(m));
- if (abs(m) > 80)
- {
- count++;
- }
- }
- if (count >= 9 && count < 15)
- {
- n = count * 6;
- }
- if (count >= 17)
- {
- n = count * 3;
- }
- if (count < 9)
- {
- n = 60;
- }
- Serial.println(millis());
- Serial.println(n);
- count = 0;
- lcd.setCursor(0, 1);
- lcd.print(n);
- }
复制代码
赞 (0)