2020-5-30 16:24:01 [显示全部楼层]
3468浏览
查看: 3468|回复: 3

[项目] 让小娃娃把手机都扔了。挥舞手臂来个隔空指挥音乐

[复制链接]
本帖最后由 gada888 于 2020-5-31 07:25 编辑

好烦,太多大人抱怨了,大家都抱怨小孩抱着手机不放,时间一久,弓了脊背,毁了视力。但是强制他们放弃手机,效果可能适得其反。所以就来个曲线救人。用另一个娱乐来引导他们减少手机娱乐。
让小娃娃把手机都扔了。挥舞手臂来个隔空指挥音乐图9
刚一看到DF商城的新版手势传感*(PAJ7620U2 手势识别传感器可识手势达13种,哥就双眼放光,心跳加快,心想,就是它了。

具体要怎么操作呢,就是选择8种手势,分别用音符1234567i代表。这样就从理论上可以根据不同的音符符号来用不同的手势去表达了。

那从程序上应该怎么设计呢。我用‘上,下,左,右,顺时针,逆时针,挥舞和往后挥’来分别代表1234567i。这样呢,我们选一首曲子。例如两只老虎吧。

让小娃娃把手机都扔了。挥舞手臂来个隔空指挥音乐图1
简谱就是这样的一串数字12311231345345565421565431251251,

我们换算成手势就是
上-下-左-上,
上-下-左-上,
左-右-顺时针-左-右-顺时针,
顺时针-逆时针-顺时针-右-左-上

顺时针-逆时针-顺时针-右-左-上
下-顺时针-上,
下-顺时针-上

现在你所需要的就是把上述的记录打印在一张纸上,然后贴在墙上。再把单片机放在纸的下面就可以hapy了。

让小娃娃把手机都扔了。挥舞手臂来个隔空指挥音乐图2

经过测试,发现识别各个不同动作相当准确,识别的甚至有点快,经过微调好多了。

-------------用到的物料如下-----------------
让小娃娃把手机都扔了。挥舞手臂来个隔空指挥音乐图3
DF MP3模块
让小娃娃把手机都扔了。挥舞手臂来个隔空指挥音乐图4
DF 的喇叭一个

让小娃娃把手机都扔了。挥舞手臂来个隔空指挥音乐图5
DF UNO Romeo

让小娃娃把手机都扔了。挥舞手臂来个隔空指挥音乐图6
DF手势传感

===========连线图如下============
让小娃娃把手机都扔了。挥舞手臂来个隔空指挥音乐图7

===========代码如下==========
[mw_shl_code=applescript,false]/*
This sketch is made by gada888,copy or modification is OK,but adaptation please refer origin of the source.
*/

#include <SoftwareSerial.h>
SoftwareSerial Serial1(10, 11);
unsigned char order[4] = {0xAA,0x06,0x00,0xB0};

#include <DFRobot_PAJ7620U2.h>
DFRobot_PAJ7620U2 paj;
///////////SETUP MP3 FUNCTION////////////
void play(unsigned char Track)
{
unsigned char play[6] = {0xAA,0x07,0x02,0x00,Track,Track+0xB3};//0xB3=0xAA+0x07+0x02+0x00,即最后一位为校验和
Serial1.write(play,6);
}
void volume( unsigned char vol)
{
unsigned char volume[5] = {0xAA,0x13,0x01,vol,vol+0xBE};//0xBE=0xAA+0x13+0x01,即最后一位为校验和
Serial1.write(volume,5);
}

////////////ONE TIME RUN/////////////
void setup()
{
Serial.begin(115200);
Serial1.begin(9600);
volume(0x1E);//音量设置0x00-0x1E
delay(300);
Serial.println("Gesture recognition of PAJ7620U2");
while(paj.begin() != 0){
Serial.println("failure! check all the connections");
delay(500);
}
Serial.println("start to test the gesture module");
paj.setGestureHighRate(true);
}
////////////////REPEATING///////////////////////
void loop()
{

DFRobot_PAJ7620U2::eGesture_t gesture = paj.getGesture();
if(gesture == paj.eGestureUp){
play(0x01);//指定播放:0x01-文件0001
delay(500);
}
else if(gesture == paj.eGestureDown){
play(0x02);//指定播放:0x02-文件0002
delay(500);
}
else if(gesture == paj.eGestureLeft){
play(0x03);//指定播放:0x03-文件0003
delay(500);
}
else if(gesture == paj.eGestureRight){
play(0x04);//指定播放:0x04-文件0004
delay(500);
}
else if(gesture == paj.eGestureClockwise){
play(0x05);//指定播放:0x05-文件0005
delay(500);
}
else if(gesture == paj.eGestureAntiClockwise){
play(0x06);//指定播放:0x06-文件0006
delay(500);
}
else if(gesture == paj.eGestureWave){
play(0x07);//指定播放:0x07-文件0007
delay(500);
}
else if(gesture == paj.eGestureBackward){
play(0x08);//指定播放:0x08-文件0008
delay(500);
}
//Convert gesture number into string description
String description = paj.gestureDescription(gesture);
Serial.print("gesture code = ");
Serial.println(gesture);
Serial.print("gesture description = ");
Serial.println(description);
}


[/mw_shl_code]

让小娃娃把手机都扔了。挥舞手臂来个隔空指挥音乐图8
烧录成功,开始happy了。









DFBJ9LdORsL  见习技师

发表于 2020-5-30 22:59:51

挺有趣的,。。。。。。。。。。。。。。
回复

使用道具 举报

dofanng  学徒

发表于 2020-5-31 10:14:37

好玩,就是演奏起来挺难的,要是像指挥那样打拍子,识别手势改变音乐节奏是不是能更简单一些对小孩子
回复

使用道具 举报

gada888  版主
 楼主|

发表于 2020-6-2 07:47:18

dofanng 发表于 2020-5-31 10:14
好玩,就是演奏起来挺难的,要是像指挥那样打拍子,识别手势改变音乐节奏是不是能更简单一些对小孩子 ...

已经在构思第二版了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail