电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
文章
让小娃娃把手机都扔了。挥舞手臂来个隔空指挥音乐
分 享
扫描二维码分享
让小娃娃把手机都扔了。挥舞手臂来个隔空指挥音乐
音乐
手势传感
gada8881
关注
发布时间: 2020-06-29
丨
阅读: 2526
*好烦,太多大人抱怨了,大家都抱怨小孩抱着手机不放,时间一久,弓了脊背,毁了视力。但是强制他们放弃手机,效果可能适得其反。所以就来个曲线救人。用另一个娱乐来引导他们减少手机娱乐*。 ![](https://cf01.ickimg.com/bbsimages/202006/6987f643efb8ea37b20f02711d042ff2.png) ![](https://cf01.ickimg.com/bbsimages/202006/96a89ea1d5002e1f5b1ee77dfbf236ed.png) 刚一看到手势传感*(PAJ7620U2 手势识别传感器)可识手势达13种,哥就双眼放光,心跳加快,心想,就是它了。 具体要怎么操作呢,就是选择8种手势,分别用音符1234567i代表。这样就从理论上可以根据不同的音符符号来用不同的手势去表达了。 那从程序上应该怎么设计呢。我用‘上,下,左,右,顺时针,逆时针,挥舞和往后挥’来分别代表1234567i。这样呢,我们选一首曲子。例如两只老虎吧。 ![](https://cf01.ickimg.com/bbsimages/202006/8a0f70768f7bcfd1bfa83ba0fe2e0d99.png) 简谱就是这样的一串数字12311231345345565421565431251251, 我们换算成手势就是 **上-下-左-上, 上-下-左-上, 左-右-顺时针-左-右-顺时针, 顺时针-逆时针-顺时针-右-左-上, 顺时针-逆时针-顺时针-右-左-上, 下-顺时针-上, 下-顺时针-上’** 现在你所需要的就是把上述的记录打印在一张纸上,然后贴在墙上。再把单片机放在纸的下面就可以hapy了。 经过测试,发现识别各个不同动作相当准确,识别的甚至有点快,经过微调好多了。 -------------用到的物料如下----------------- 1.手势传感 ![](https://cf01.ickimg.com/bbsimages/202006/d4f130a515fa842fd1e0040c1c343f0f.png) 2.mp3模块 ![](https://cf01.ickimg.com/bbsimages/202006/a890acd0ae7e67bfe83fc9ebdcc710fe.png) 3.8欧喇叭 ![](https://cf01.ickimg.com/bbsimages/202006/86ddb5759edcb515a405b1fd7e257701.png) 下面是连线图 ![](https://cf01.ickimg.com/bbsimages/202006/c5294588927bb2e671fdc36be5d75716.png) ```c /@@* This sketch is made by gada888,copy or modification is OK,but adaptation please refer origin of the source. */ #include
SoftwareSerial Serial1(10, 11); unsigned char order[4] = {0xAA,0x06,0x00,0xB0}; #include
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); } ``` #### ![](https://cf01.ickimg.com/bbsimages/202006/61b596ea6416fac5de5d982a03d19722.png)
原创作品,未经权利人授权禁止转载。详情见
转载须知
。
举报文章
点赞
(
0
)
gada8881
关注
评论
(0)
登录后可评论,请
登录
或
注册
相关文章推荐
MK-米客方德推出工业级存储卡
Beetle ESP32 C3 蓝牙数据收发
Beetle ESP32 C3 wifi联网获取实时天气信息
开箱测评Beetle ESP32-C3 (RISC-V芯片)模块
正点原子数控电源DP100测评
DP100试用评测-----开箱+初体验
Beetle ESP32 C3环境搭建
【花雕体验】16 使用Beetle ESP32 C3控制8X32位WS2812硬屏之二
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回
我要举报该内容理由
×
广告及垃圾信息
抄袭或未经授权
其它举报理由
请输入您举报的理由(50字以内)
取消
提交