【雕爷学编程】Arduino动手做(100)---MAX30102手腕心率模块3
37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百:MAX30102血氧仪手腕心率脉搏检测心跳传感器模块
程序二:与心跳同步点亮的LED灯
实验开源图形编程(Mind+、编玩边学)
实验串口返回情况
Arduino实验场景图
程序三:通过红外读数感知存在
Arduino参考开源代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | /* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 程序三:通过红外读数感知存在 */ #include <Wire.h> #include "MAX30105.h" MAX30105 particleSensor; long samplesTaken = 0; //用于计算 Hz 或读取速率的计数器 long unblockedValue; //通电时的平均 IR long startTime; //用于计算测量率 void setup() { Serial.begin(9600); Serial.println( "MAX30105 存在感测示例" ); //初始化传感器 if (particleSensor.begin(Wire, I2C_SPEED_FAST) == false ) //使用默认 I2C 端口,400kHz 速度 { Serial.println( "没有找到MAX30105,请检查接线/电源。 " ); while (1); } //设置感应最大 18 英寸,最大 LED 亮度 byte ledBrightness = 0xFF; //选项:0=关到 255=50mA byte sampleAverage = 4; //样本平均值选项:1、2、4、8、16、32 byte ledMode = 2; //工作选项:1 = 仅红色,2 = 红色 + IR,3 = 红色 + IR + 绿色 int sampleRate = 400; //采样率选项:50、100、200、400、800、1000、1600、3200 int pulseWidth = 411; //脉宽选项:69、118、215、411 int adcRange = 2048; //选项:2048、4096、8192、16384 //使用这些设置来配置传感器 particleSensor.setup(ledBrightness, sampleAverage, ledMode, sampleRate, pulseWidth, adcRange); particleSensor.setPulseAmplitudeRed(0); //关闭红色 LED particleSensor.setPulseAmplitudeGreen(0); //关闭绿色 LED //上电时取平均 IR 读数 unblockedValue = 0; for ( byte x = 0 ; x < 32 ; x++) { unblockedValue += particleSensor.getIR(); //读取 IR 值 } unblockedValue /= 32; startTime = millis(); } void loop() { samplesTaken++; Serial.print( "IR[" ); Serial.print(particleSensor.getIR()); Serial.print( "] 赫兹[" ); Serial.print(( float )samplesTaken / ((millis() - startTime) / 1000.0), 2); Serial.print( "]" ); long currentDelta = particleSensor.getIR() - unblockedValue; Serial.print( " 增量[" ); Serial.print(currentDelta); Serial.print( "]" ); if (currentDelta > ( long )100) { Serial.print( "开始测量!" ); } Serial.println(); delay(1000); } |
实验串口返回情况
程序四:读取板载温度传感器
Arduino参考开源代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | /* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 程序四:读取板载温度传感器 下载库: http://librarymanager/All#SparkFun_MAX30105 */ #include <Wire.h> #include "MAX30105.h" MAX30105 particleSensor; void setup() { Serial.begin(9600); Serial.println( "正在初始化..." ); // 初始化传感器 if (particleSensor.begin(Wire, I2C_SPEED_FAST) == false ) //使用默认 I2C 端口,400kHz 速度 { Serial.println( "没有找到MAX30105,请检查接线/电源。" ); while (1); } //LED 的功率非常低,不会对温度读数产生太大影响,但是 //您可能想要关闭 LED 以避免任何局部加热 particleSensor.setup(0); //配置传感器。关闭 LED //particleSensor.setup(); //配置传感器。使用 25mA 驱动 LED particleSensor.enableDIETEMPRDY(); //启用临时就绪中断,这是必需的。 } void loop() { float temperature = particleSensor.readTemperature(); Serial.print( "摄氏温度=" ); Serial.print(temperature, 4); float temperatureF = particleSensor.readTemperatureF(); Serial.print( " 华氏温度=" ); Serial.println(temperatureF, 4); Serial.println(); delay(1000); } |
实验串口返回情况
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性