“锻炼记录仪”的版本间的差异
853387039@qq.com(讨论 | 贡献) (Created page with "{{Language| 锻炼记录器}} {| style="width: 800px;" |- | ==目的== 做一个能提醒运动时间,并给各种运动计数。 ==原理== 通过姿态传感器检测运...") |
853387039@qq.com(讨论 | 贡献) |
||
(未显示3个用户的15个中间版本) | |||
第4行: | 第4行: | ||
| | | | ||
==目的== | ==目的== | ||
− | + | 设定锻炼时间,蜂鸣器就会响起,只有完成规定数量的运动才能关闭,利用Motion模块记录你的动作并计数。 | |
+ | [[File:Exercise_record-image.jpg|600px|center]] | ||
==原理== | ==原理== | ||
− | + | 通过RTC设定运动时间,到了时间蜂鸣器就响。通过姿态传感器检测运动变化来计数,达到规定数量的运动才关闭蜂鸣器。平时OLED显示屏上显示显示当前日期和时间,运动状态下显示还需要运动的运动量。 | |
+ | [[File:Exercise_record-sch.jpg|600px|center]] | ||
+ | |||
==设备== | ==设备== | ||
{|class="wikitable" | {|class="wikitable" | ||
第13行: | 第16行: | ||
|模块||数量||功能 | |模块||数量||功能 | ||
|- | |- | ||
− | |[[ | + | |[[mCookie-CoreUSB/zh]]||1||核心板 |
|- | |- | ||
− | |[[ | + | |[[mCookie-Hub/zh]]||1||传感器转接板 |
|- | |- | ||
− | |[[ | + | |[[mCookie-Motion/zh]]||1||姿态检测模块 |
|- | |- | ||
− | |[[ | + | |[[mCookie-OLED/zh]]||1||显示模块 |
|- | |- | ||
− | |[[ | + | |[[mCookie-RTC/zh]]||1||时钟模块 |
|- | |- | ||
− | |[[ | + | | [[mCookie-BM/zh]]||1||电池管理 |
|- | |- | ||
− | | [[ | + | | [[mCookie-Duo-V/zh]]||1||扩展板 |
− | |||
− | |||
|- | |- | ||
| [[Microduino-Buzzer/zh]]||1||蜂鸣器 | | [[Microduino-Buzzer/zh]]||1||蜂鸣器 | ||
|} | |} | ||
− | |||
*其他设备: | *其他设备: | ||
**电池1个 | **电池1个 | ||
**乐高外壳 | **乐高外壳 | ||
− | + | [[File:Exercise_record-module.jpg|600px|center]] | |
− | + | ==准备== | |
− | + | *Setup 1:用USB线将CoreUSB模块与PC/Mac相连,并打开Arduino IDE。 | |
− | == | + | [[Image:CoreUSB_Ble_pc.jpg|600px|center]] |
− | *Setup | + | *Setup 2:点击Files > Examples > mCookie > _305_PersonalTrainer, 加载程序。 |
− | + | [[File: _305_PersonalTrainer_load.jpg|600px|center]] | |
− | + | * Setup 3:加载代码,选择好板卡和COM端口下载程序。出现下载成功(Done Uploading)提示,表示程序已经写进CoreUSB模块中了。 | |
− | [[ | + | [[File: _305_PersonalTrainer_load-ok.jpg|600px|center]] |
− | * | ||
− | [[ | ||
− | |||
− | * | ||
− | [[ | ||
==软件调试== | ==软件调试== | ||
− | * | + | *运动判断 |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<source lang="cpp"> | <source lang="cpp"> | ||
− | + | change_gx = (abs(gx) + abs(gy) + abs(gz)) / 3; | |
− | + | //Serial.println(change_gx); | |
− | + | if (change_gx > 80 && !sport_en) | |
− | + | sport_en = true; | |
− | + | else if (change_gx <= 10&&!sport_num) | |
+ | { | ||
+ | timer_0 = millis(); | ||
+ | sport_num = true; | ||
+ | } | ||
+ | if (sport_num) | ||
+ | { | ||
+ | if (millis()-timer_0 > 1000) | ||
+ | { | ||
+ | change_gx = (abs(gx) + abs(gy) + abs(gz)) / 3; | ||
+ | if (change_gx <= 10) | ||
+ | { | ||
+ | sport_num= false; | ||
+ | sport_en = false; | ||
+ | timer_0 = millis(); | ||
+ | } | ||
+ | } | ||
+ | } | ||
</source> | </source> | ||
− | |||
*运动计数 | *运动计数 | ||
<source lang="cpp"> | <source lang="cpp"> | ||
− | + | if (sport_change != sport_en && time_en) | |
− | |||
− | |||
− | |||
− | |||
− | |||
{ | { | ||
if (sport_en) | if (sport_en) | ||
{ | { | ||
− | + | Sport_num -= 1; | |
tone(buzzer_pin, 300); | tone(buzzer_pin, 300); | ||
− | + | if (Sport_num == 0) | |
+ | { | ||
+ | time_en = false; | ||
+ | noTone(buzzer_pin); | ||
+ | } | ||
} | } | ||
− | else | + | //else |
− | + | // noTone(buzzer_pin); | |
− | + | //Serial.println(sport_en); | |
sport_change = sport_en; | sport_change = sport_en; | ||
} | } | ||
</source> | </source> | ||
+ | * | ||
+ | ==搭建硬件== | ||
+ | *Setup1:将Buzzer蜂鸣器模块接到Hub的D6的引脚上。 | ||
+ | [[file: Exercise_record_6.jpg |800px|center]] | ||
+ | *Setup 2:将激活后的电池盒与BM模块相连. | ||
+ | [[File:CoreUSB_Ble_steup2.jpg|600px|center]] | ||
+ | *Setup 3:将所有模块堆叠在一起,顺序随意,电路部分搭建完成。 | ||
+ | [[File: Exercise_record _steup3.jpg|600px|center]] | ||
+ | ==调试代码== | ||
+ | [[File: Exercise_record _debug1.jpg|600px|center]] | ||
+ | 1.初次使用需要通过程序为RTC模块设定初始时间,找到上图这段代码,按照当地时间进行设置,将程序通过CoreUSB载入RTC模块。 | ||
+ | [[File: Exercise_record _debug2.jpg|600px|center]] | ||
+ | 2.载入完成后,在这段代码前面加上 //,整段代码会变成灰色,此时再次将程序载入RTC模块,之后就可以自行纪录时间了。 | ||
+ | [[File: Exercise_record _debug3.jpg|600px|center]] | ||
+ | 3.找到上图这段代码,可以设定锻炼时间,设定好之后载入CoreUSB模块,之后一到这个时间,蜂鸣器就会响。 | ||
+ | [[File: Exercise_record _debug4.jpg|600px|center]] | ||
+ | 4. 找到上图这段代码,可以设定锻炼次数,设定好之后载入CoreUSB模块,蜂鸣器一响,屏幕就会切换到运动次数显示,完成后蜂鸣器就会停止。不要偷懒啊! | ||
==结果== | ==结果== | ||
可以对仰卧起坐、哑铃等运动计数。 | 可以对仰卧起坐、哑铃等运动计数。 | ||
+ | [[File:Exercise_record.jpg|600px|center|excercise]] | ||
==视频== | ==视频== | ||
|} | |} |
2015年10月13日 (二) 10:09的最新版本
Language | English |
---|
目的设定锻炼时间,蜂鸣器就会响起,只有完成规定数量的运动才能关闭,利用Motion模块记录你的动作并计数。 原理通过RTC设定运动时间,到了时间蜂鸣器就响。通过姿态传感器检测运动变化来计数,达到规定数量的运动才关闭蜂鸣器。平时OLED显示屏上显示显示当前日期和时间,运动状态下显示还需要运动的运动量。 设备
准备
软件调试
change_gx = (abs(gx) + abs(gy) + abs(gz)) / 3;
//Serial.println(change_gx);
if (change_gx > 80 && !sport_en)
sport_en = true;
else if (change_gx <= 10&&!sport_num)
{
timer_0 = millis();
sport_num = true;
}
if (sport_num)
{
if (millis()-timer_0 > 1000)
{
change_gx = (abs(gx) + abs(gy) + abs(gz)) / 3;
if (change_gx <= 10)
{
sport_num= false;
sport_en = false;
timer_0 = millis();
}
}
}
if (sport_change != sport_en && time_en)
{
if (sport_en)
{
Sport_num -= 1;
tone(buzzer_pin, 300);
if (Sport_num == 0)
{
time_en = false;
noTone(buzzer_pin);
}
}
//else
// noTone(buzzer_pin);
//Serial.println(sport_en);
sport_change = sport_en;
}
搭建硬件
调试代码1.初次使用需要通过程序为RTC模块设定初始时间,找到上图这段代码,按照当地时间进行设置,将程序通过CoreUSB载入RTC模块。 2.载入完成后,在这段代码前面加上 //,整段代码会变成灰色,此时再次将程序载入RTC模块,之后就可以自行纪录时间了。 3.找到上图这段代码,可以设定锻炼时间,设定好之后载入CoreUSB模块,之后一到这个时间,蜂鸣器就会响。 4. 找到上图这段代码,可以设定锻炼次数,设定好之后载入CoreUSB模块,蜂鸣器一响,屏幕就会切换到运动次数显示,完成后蜂鸣器就会停止。不要偷懒啊! 结果可以对仰卧起坐、哑铃等运动计数。 视频 |