心率传感器试用:跳动的心

2017-04-146.2万
AI 快速预览详细 收起
本文介绍了一个使用DFRobot的Curie Nano和心跳传感器的项目教程。通过读取心跳传感器的数据,经过滤波处理和映射算法,控制LED灯的亮度,使其跟随心跳闪烁。项目所需材料包括ws2812 LED灯带、Curie Nano和心跳传感器。这个项目适合STEM教育和编程启蒙,能够帮助孩子理解心跳数据的读取和处理过程。
迟来的帖子,什么都别说了,直接上代码:
  1. /*
  2.     author: lisper <<a href="mailto:931816770@qq.com" target="_blank">931816770@qq.com</a>>
  3.     license: MIT
  4.     材料清单: ws2812 led strip,  Curie Nano(DFRobot), heart rate sensor(DFRobot)
  5. */
  6. #include <Adafruit_NeoPixel.h>
  7. #ifdef __AVR__
  8. #include <avr/power.h>
  9. #endif
  10. #define LED_PIN     6   //定义led的引脚
  11. #define PIXELS_NUM  18   //定义led的数量
  12. #define HEART_PIN   A0  //定义心跳传感器的引脚
  13. Adafruit_NeoPixel pixels = Adafruit_NeoPixel(PIXELS_NUM, LED_PIN, NEO_GRB + NEO_KHZ800);
  14. void setup() {
  15.   Serial.begin(115200);
  16.   pixels.begin();
  17.   pixels.show();
  18. }
  19. void loop() {
  20.   //读取心跳传感器数据
  21.   int heartValue = analogRead(HEART_PIN);
  22.   //滤波处理
  23.   int filterValue = filter(heartValue);
  24.   Serial.println(filterValue);
  25.   //把血氧饱和度数据映射到led灯的亮度范围(0~255)
  26.   int mapValue = map(constrain(filterValue, 940, 1024), 940, 1024, 0, 255);
  27.   //根据计算得到的数值设置红色亮度
  28.   setRedColor(mapValue);
  29.   delay(20);
  30. }
  31. //设置红色亮度
  32. void setRedColor(int red) {
  33.   for (int i = 0; i < PIXELS_NUM; i++) {
  34.     pixels.setPixelColor(i, pixels.Color(red, 0, 0));
  35.   }
  36.   pixels.show();
  37. }
  38. //滤波
  39. int filter (int input) {
  40. #define FILTER_SIZE 10
  41.   static int filterArray[FILTER_SIZE] = {0};
  42.   static int fi = 0;
  43.   filterArray[fi++] = input;
  44.   if (fi >= FILTER_SIZE) {
  45.     fi = 0;
  46.   }
  47.   int32_t output = 0;
  48.   for (int i = 0; i < FILTER_SIZE; i++) {
  49.     output += filterArray;
  50.   }
  51.   return int(output / FILTER_SIZE);
  52. }
复制代码

上图:

心率传感器试用:跳动的心图1



材料链接:

爱心led灯:
https://item.taobao.com/item.htm?spm=a1z09.2.0.0.TSYI8y&id=529217131074&_u=e1kdiot10623

Curie Nano:  
https://www.dfrobot.com.cn/goods-1343.html

心跳传感器:
https://www.dfrobot.com.cn/goods-1339.html


爱心led灯本来是在淘宝买的,并且自带了控制芯片,效果写在控制芯片里了,接上电就可以亮,这不是我想要的,于是就把板子上的芯片拆了,引出了几根线,接在Arduino上,方便自己编程控制,用起来还不错,可以跟着心跳闪烁

心率传感器试用:跳动的心图2心率传感器试用:跳动的心图3

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(24)
派大星ym
派大星ym
酷酷酷酷酷
派大星ym
派大星ym
,,,,
大胆的去做
大胆的去做
用测心跳模块非常好玩且实用 可以做个试一试
aaaa
aaaa
可以获得include中的文件吗
20060606
20060606
可以做测谎仪
小马1
小马1
哇啊 我真的好喜欢呀 做的真不错呀 非常棒
从前慢
从前慢
请问那个心形LED灯如何拆掉芯片再引线啊???
gada888
gada888
参考价值颇高
youyuesama
youyuesama
想请问引用的库是?
rNrDUZ12
rNrDUZ12
跟着做了一下 就是LED亮度很暗 怎么调呢
小芋圆冬瓜茶
小芋圆冬瓜茶
你好,如果用arduino uno 的话,这个代码需要怎么修改呢
小芋圆冬瓜茶
小芋圆冬瓜茶
为什么这个代码,我用arduino运行会出错呢
0312969
0312969
可以用Arduino nano吗?
Youyou
Youyou
传说中的李大神,一言不合就上代码,666!
lisper
lisper
作者
回复52hezi
可以的啊
lisper
lisper
作者
回复Youyou
:)):)):)):$
共4条回复,已加载2条,点击查看更多共4条回复,已加载全部
沧海笑
沧海笑
了解了,的确是好思路。
沧海笑
沧海笑
请教楼主,从代码看,实现了将血氧采样值与0--255线性关联,表现为心率越高,亮度越高,并非闪动频率随着心率而变化。是这样吗?
lisper
lisper
作者
回复沧海笑
血氧采样值和心跳是同步的...
沧海笑
沧海笑回复lisper
我表述有误,是血氧采样值越高,亮度越高。led的闪动频率和心跳无关吧?
共3条回复,已加载2条,点击查看更多共3条回复,已加载全部
iooops
iooops
为啥你的帖子浏览量比我大好多。。
lisper
lisper
作者
回复iooops
我是版主
shijinxianzhe
shijinxianzhe
很漂亮!
Grey
Grey
一言不合就上代码,简直太赞了!
lisper
lisper
作者
回复Grey
一直都是一言不合
qq819287927434
qq819287927434
把板子的芯片拆了,这个可以啊
lisper
lisper
作者
回复qq819287927434
板子的芯片不是arduino, 只能拆了