心率传感器试用:跳动的心
迟来的帖子,什么都别说了,直接上代码:/*
author: lisper <<a href="mailto:931816770@qq.com" target="_blank">931816770@qq.com</a>>
license: MIT
材料清单: ws2812 led strip,Curie Nano(DFRobot), heart rate sensor(DFRobot)
*/
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define LED_PIN 6 //定义led的引脚
#define PIXELS_NUM18 //定义led的数量
#define HEART_PIN A0//定义心跳传感器的引脚
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(PIXELS_NUM, LED_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
Serial.begin(115200);
pixels.begin();
pixels.show();
}
void loop() {
//读取心跳传感器数据
int heartValue = analogRead(HEART_PIN);
//滤波处理
int filterValue = filter(heartValue);
Serial.println(filterValue);
//把血氧饱和度数据映射到led灯的亮度范围(0~255)
int mapValue = map(constrain(filterValue, 940, 1024), 940, 1024, 0, 255);
//根据计算得到的数值设置红色亮度
setRedColor(mapValue);
delay(20);
}
//设置红色亮度
void setRedColor(int red) {
for (int i = 0; i < PIXELS_NUM; i++) {
pixels.setPixelColor(i, pixels.Color(red, 0, 0));
}
pixels.show();
}
//滤波
int filter (int input) {
#define FILTER_SIZE 10
static int filterArray = {0};
static int fi = 0;
filterArray = input;
if (fi >= FILTER_SIZE) {
fi = 0;
}
int32_t output = 0;
for (int i = 0; i < FILTER_SIZE; i++) {
output += filterArray;
}
return int(output / FILTER_SIZE);
}
上图:
材料链接:
爱心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上,方便自己编程控制,用起来还不错,可以跟着心跳闪烁
一言不合就上代码,简直太赞了! 本帖最后由 gada888 于 2017-4-17 22:28 编辑
您好,想问一下
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(PIXELS_NUM, LED_PIN, NEO_GRB + NEO_KHZ800)
这句是什么意思啊------------
内存里分个地儿给灯珠的数量,数字脚位,和工作频率。
沧海笑 发表于 2017-5-1 21:58
请教楼主,从代码看,实现了将血氧采样值与0--255线性关联,表现为心率越高,亮度越高,并非闪动频率随着心 ...
不是心率越高,亮度越高,是血氧采样值越大亮度越高 {:5_168:} Curie Nano! Curie板吗。 gada888 发表于 2017-4-15 23:12
Curie板吗。
对的, Curie Nano 动图还算可人~ 把板子的芯片拆了,这个可以啊 tyrionnn 发表于 2017-4-16 10:59
您好,想问一下
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(PIXELS_NUM, LED_PIN, NEO_GRB + NEO_KHZ8 ...
对的啊 luna 发表于 2017-4-17 17:16
动图还算可人~
必须得是动图! 飞猪的小号 发表于 2017-4-19 11:10
把板子的芯片拆了,这个可以啊
板子的芯片不是arduino, 只能拆了 Grey 发表于 2017-4-23 14:09
一言不合就上代码,简直太赞了!
一直都是一言不合 很漂亮! 为啥你的帖子浏览量比我大好多。。 请教楼主,从代码看,实现了将血氧采样值与0--255线性关联,表现为心率越高,亮度越高,并非闪动频率随着心率而变化。是这样吗? iooops 发表于 2017-4-30 23:43
为啥你的帖子浏览量比我大好多。。
我是版主 本帖最后由 沧海笑 于 2017-5-2 10:06 编辑
lisper 发表于 2017-5-2 08:48
不是心率越高,亮度越高,是血氧采样值越大亮度越高
我表述有误,是血氧采样值越高,亮度越高。led的闪动频率和心跳无关吧? 沧海笑 发表于 2017-5-2 10:04
我表述有误,是血氧采样值越高,亮度越高。led的闪动频率和心跳无关吧? ...
血氧采样值和心跳是同步的... 了解了,的确是好思路。 传说中的李大神,一言不合就上代码,666!
页:
[1]
2