19997| 24
|
【心率传感器试用】有氧运动达标指示器 |
本帖最后由 安卓机器人 于 2016-12-7 15:35 编辑 【心率传感器试用】有氧运动达标指示器 【有氧运动~~~?】 强度较低、持续时间较长、节奏较缓。 那些在高强度和短时间内完成的运动,人体吸入的氧气量远不能满足机体的消耗,体内的氧气处于入不敷出的状态。 而在有氧运动过程中,身体所消耗的氧气大致等于吸入的氧气量,这样可使身体的肌肉细胞在运动过程中不致缺氧,从而起到更好的增进健康的作用。 【常见的有氧运动】 散步、慢跑、做操、骑车、健身舞等慢运动的范畴。 【达标要求】 1、每次必须达到一定的时间。如:每周3次,每次30min;每周4次,每次20min;每周5次,每次20min。 2、各年龄段的运动者心脏每分钟的搏动要达到一定的次数(心率)。安静心率为15秒的脉搏数乘以4。按年龄Y计算自己的最高心率公式为:男为205-Y/2;女为220-Y/2;最高心率的60 %~80%为适合的有效的有氧运动的心率范围。例:一位40岁男性,计算为:205-40/2= 185(最高心率)。他的有氧运动的适合心率为:185*(60 %~80%)即111~148。该男性的运动心率为135~145最佳。 3、运动之前准备活动5~10min,运动之后3~5min 放松,锻炼一下腰腹部等运动中未得到充分锻炼的部位。 DIY【有氧运动达标指示器】 健身过程中随时自测一下心率,做到眼前出彩、心中有数。 全图 数码管 RGB~LED DF~UNO与传感器接线图(心率传感器拔到D) 【Arduino 代 码】 [mw_shl_code=cpp,true]//2016/11/23 //利用DF的心率传感器模块测出数字信号-->DF_UNO处理-->数码管显示数值同时RGB_LED灯显示数值相应范围的颜色 /*******************************************************************************/ #include <TimerOne.h> #include "TM1637.h" #include "DFRobot_Heartrate.h" #define ON 1 #define OFF 0 #define CLK 3 //pins definitions for TM1637 and can be changed to other ports #define DIO 2 #define LED_R 8 #define LED_G 9 #define LED_B 10 #define heartratePin A1 DFRobot_Heartrate heartrate(DIGITAL_MODE); ///< ANALOG_MODE or DIGITAL_MODE TM1637 tm1637(CLK,DIO); int heartRate =0; int8_t TimeDisp[] = {0x00,0x00,0x00,0x00}; unsigned char ClockPoint = 1; unsigned char Update; unsigned char halfsecond = 0; unsigned char second; unsigned char minute = 0; unsigned char hour = 0; ////////////////////////////////////////////////////// void setup() { pinMode(LED_R,OUTPUT); pinMode(LED_G,OUTPUT); pinMode(LED_B,OUTPUT); Serial.begin(115200); tm1637.set(); tm1637.init(); Timer1.initialize(500000);//timing for 500ms Timer1.attachInterrupt(TimingISR);//declare the interrupt serve routine:TimingISR } ////////////////////////////////////////////////// void loop() { if(Update == ON) { uint8_t rateValue; heartrate.getValue(heartratePin); ///< A1 foot sampled values rateValue = heartrate.getRate(); ///< Get heart rate value if(rateValue) { Serial.println(rateValue); heartRate = rateValue; LED_RGB(heartRate); heartRateUpdate(); } tm1637.display(TimeDisp); } delay(20); } //////////////////////////////////////////////// void TimingISR() { halfsecond ++; Update = ON; if(halfsecond == 2){ second ++; if(second == 60) { minute ++; if(minute == 60) { hour ++; if(hour == 24)hour = 0; minute = 0; } second = 0; } halfsecond = 0; } // Serial.println(second); ClockPoint = (~ClockPoint) & 0x01; } ///////////////////////////////////////////////////// void heartRateUpdate(void) // 处理心率数值准备在数码管上显示出来 { TimeDisp[0] = 0; TimeDisp[1] = heartRate / 100; TimeDisp[2] = heartRate /10 % 10; TimeDisp[3] = heartRate % 10; Update = OFF; } ////////////////////////////////////////////////// void LED_RGB( int value) // 根据不同范围【把年龄代入公式计算确定】的心率数值决定LED灯的颜色 { if (value < 55) // 心率数值过低时,LED灯不亮 { digitalWrite(LED_R,HIGH); digitalWrite(LED_G,HIGH); digitalWrite(LED_B,HIGH); } else if(value>= 55 && value < 72 ) // 一般情况下,显蓝色 { digitalWrite(LED_R,HIGH); digitalWrite(LED_G,HIGH); digitalWrite(LED_B,LOW); } else if(value >= 72 && value <= 110)// 中度时显白色 { digitalWrite(LED_R,LOW); digitalWrite(LED_G,LOW); digitalWrite(LED_B,LOW); } else if(value >=111 && value <=147)// 达标时显绿色 { digitalWrite(LED_R,HIGH); digitalWrite(LED_G,LOW); digitalWrite(LED_B,HIGH); } else if (value > 147) // 过度时,显红色以警示 { digitalWrite(LED_R,LOW); digitalWrite(LED_G,HIGH); digitalWrite(LED_B,HIGH); } delay(20); }[/mw_shl_code] 手指头容易且方便测,稳定不动,通常十秒过后数字就会出现并实时改变~ 一般情况下显蓝色(不运动) 开始运动后逐渐增高过程显白色 达标(优)显绿色 超标(过度)显红色 【附:每日四个三分钟】 (祖国医学健身的精髓哟) 1.腹式呼吸(睡前平躺进行,目的是推动内脏运动) 2.头低位运动(站立->头向下接近膝部,重复。目的增强脑血管抗压力) 3.晨冷水浴(全身皮肤微循环血管操) 4.搓手(五指相对应的反射区就是人体五脏,搓手心手背相当于在按摩刺激内脏) |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed