掌控板——看见心跳
本帖最后由 yugg 于 2019-12-13 14:29 编辑先看视频效果:
https://v.qq.com/x/page/i3034grhk2q.html
其实之前做过两个基于pulse sensor心率传感器的项目,都是基于arduino nano完成的,用到了led和128*64液晶屏。
而掌控自带了RGB灯,自带了128*64屏幕,自带了蜂鸣器,条件摆着这里,非常适合复刻这个项目。
材料清单:
掌控;扩展板(我这个是鸽子);pulse sensor(某宝买的便宜货);
先连线吧:
有了鸽子扩展板,连线就很方便了。pulsesensor上也清晰的标注了正负极和信号口,一一对应就行。模拟信号我接到了P1口。
接下来聊一聊程序编写的思路:
拿到一个没有玩过或者不熟练的传感器,当然是找教程了。github绝对是个好地方。
1.去github上找一找关于pulse sensor的项目,github.com
2.上图找到的是关于pulsesensor传感器的库,把它导入到arduino。就可以查看各种案例代码了。虽然不能直接用到掌控上,但了解用法就可以了。
3.今天先选一个最简单的案例,测试一下功能。先看下arduno的代码:
//Variables
int PulseSensorPurplePin = 0; // Pulse Sensor PURPLE WIRE connected to ANALOG PIN 0
int LED13 = 13; //The on-board Arduion LED
int Signal; // holds the incoming raw data. Signal value can range from 0-1024
int Threshold = 550; // Determine which Signal to "count as a beat", and which to ingore.
// The SetUp Function:
void setup() {
pinMode(LED13,OUTPUT); // pin that will blink to your heartbeat!
Serial.begin(9600); // Set's up Serial Communication at certain speed.
}
// The Main Loop Function
void loop() {
Signal = analogRead(PulseSensorPurplePin);// Read the PulseSensor's value.
// Assign this value to the "Signal" variable.
Serial.println(Signal); // Send the Signal value to Serial Plotter.
if(Signal > Threshold){ // If the signal is above "550", then "turn-on" Arduino's on-Board LED.
digitalWrite(LED13,HIGH);
} else {
digitalWrite(LED13,LOW); //Else, the sigal must be below "550", so "turn-off" this LED.
}
delay(10);
}
从上面的代码我们可以知道几个信息:
一是心率传感器输出的模拟信号,范例中接到了arduino的A0口的。
二是这个案例确实非常简约,仅仅是判断模拟值有没有超过中值,超过了就算心跳一次(很不靠谱)。
4.把上述程序思路移植到掌控上。
如上图示:
箭头1处变量表示中值,超过这个值,判断为心跳了。
箭头2处掌控的模拟值范围是0-4095,所以要映射一下。
5.看见心跳的2.0版改进思路
一是增加BPM数值显示,这个算法要复杂些,但也有案例供参考。二是在128*64上显示心电图,那样会更加逼真。
期待我的2.0吧。
烧掌控板的鸽子板…… 创意赞 非常有用 谢谢楼主
页:
[1]