5123| 3
|
[入门教程] 掌控板——看见心跳 |
本帖最后由 yugg 于 2019-12-13 14:29 编辑 先看视频效果: 其实之前做过两个基于pulse sensor心率传感器的项目,都是基于Arduino nano完成的,用到了led和128*64液晶屏。 而掌控自带了RGB灯,自带了128*64屏幕,自带了蜂鸣器,条件摆着这里,非常适合复刻这个项目。 材料清单: 掌控;扩展板(我这个是鸽子);pulse sensor(某宝买的便宜货); 先连线吧: 有了鸽子扩展板,连线就很方便了。pulsesensor上也清晰的标注了正负极和信号口,一一对应就行。模拟信号我接到了P1口。 接下来聊一聊程序编写的思路: 拿到一个没有玩过或者不熟练的传感器,当然是找教程了。github绝对是个好地方。 1.去github上找一找关于pulse sensor的项目,[color=rgb(255, 113, 64) !important]github.com 2.上图找到的是关于pulsesensor传感器的库,把它导入到arduino。就可以查看各种案例代码了。虽然不能直接用到掌控上,但了解用法就可以了。 3.今天先选一个最简单的案例,测试一下功能。先看下arduno的代码: [mw_shl_code=applescript,true] // 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); }[/mw_shl_code] 从上面的代码我们可以知道几个信息: 一是心率传感器输出的模拟信号,范例中接到了arduino的A0口的。 二是这个案例确实非常简约,仅仅是判断模拟值有没有超过中值,超过了就算心跳一次(很不靠谱)。 4.把上述程序思路移植到掌控上。 如上图示: 箭头1处变量表示 中值,超过这个值,判断为心跳了。 箭头2处掌控的模拟值范围是0-4095,所以要映射一下。 5.看见心跳的2.0版改进思路 一是增加BPM数值显示,这个算法要复杂些,但也有案例供参考。二是在128*64上显示心电图,那样会更加逼真。 期待我的2.0吧。 |
2.29 KB, 下载次数: 2645
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed