25447浏览
查看: 25447|回复: 23

妈妈再打我一次--双十一特辑

[复制链接]
RGB手势传感器简易快速入门

前言


地府罗伯特,最近新推出一款功能强大的RGB手势传感器。集手势,光源强度、颜色识别为一体,尺寸却只比指甲盖大一点点,看着就让人眼馋。
妈妈再打我一次--双十一特辑图2

为此第一时间,拿到了这款传感器,闲言碎语不讲啦。正值双十一上传个简单的测试体验。做点什么呢? 看下面的图:

妈妈再打我一次--双十一特辑图1

没错! 手势传感器,用来检测打脸自然最合适不过啦。哈哈哈哈哈哈哈哈


零件清单:



1.SEN0187 RGB手势传感器                                           X 1
2.WiDo  (集成Leonardo主控芯片)                  X 1

PS: 任何leonardo类型Arduino板子均可。
推荐 DFRobot Leonardo   ,   Beetle控制器





电路连接图:



妈妈再打我一次--双十一特辑图3
备注: RGB手势传感器采用的是I2C通讯,同时在监测到有手势的动作时,INT输出一个低电平,用于触发中断。

           因此将传感器的I2C Pin脚(SDA、SDL)与控制器的Pin脚连接即可,本例中断Pin脚选择(D0)。

安利下leonardo类控制板的中断引脚为(D0,D1,D2,D3),其中I2C对应的引脚为(D2,D3),因此选择中断引脚时避免与I2C冲突。



程序代码
  1. <div align="left">#include <Wire.h>
  2. #include <SparkFun_APDS9960.h>
  3. // Constants
  4. // Global Variables
  5. SparkFun_APDS9960 apds = SparkFun_APDS9960();
  6. int isr_flag = 0;</div><div align="left">
  7. </div><div align="left">  void setup() {</div><div align="left">  Keyboard.begin();                                     // 开始模拟键盘
  8.   // Initialize Serial port
  9.   Serial.begin(9600);
  10.   Serial.println();
  11.   Serial.println(F("--------------------------------"));
  12.   Serial.println(F("SparkFun APDS-9960 - GestureTest"));
  13.   Serial.println(F("--------------------------------"));
  14.   // Initialize interrupt service routine
  15.   attachInterrupt(2, interruptRoutine, FALLING);          //选择中断编号为2,对于的中断引脚为D0
  16. // Initialize APDS-9960 (configure I2C and initial values)
  17.   if ( apds.init() ) {
  18.     Serial.println(F("APDS-9960 initialization complete"));
  19.   } else {
  20.     Serial.println(F("Something went wrong during APDS-9960 init!"));
  21.   }
  22.   // Start running the APDS-9960 gesture sensor engine
  23.   if ( apds.enableGestureSensor(true) ) {
  24.     Serial.println(F("Gesture sensor is now running"));
  25.   } else {
  26.     Serial.println(F("Something went wrong during gesture sensor init!"));
  27.   }
  28. }</div><div align="left">
  29. </div><div align="left">void loop() {</div><div align="left">     if( isr_flag == 1 ) {
  30.        handleGesture();
  31.        isr_flag = 0;
  32.       }
  33.      }</div><div align="left">
  34. </div><div align="left">void interruptRoutine() {</div><div align="left">  isr_flag = 1;
  35. }
  36. </div><div align="left">
  37. </div><div align="left">void handleGesture() {
  38.     if ( apds.isGestureAvailable() ) {
  39.         switch ( apds.readGesture() ) {
  40.         case DIR_UP:
  41.         Serial.println("UP");
  42.         break;
  43.         case DIR_DOWN:
  44.         Serial.println("DOWN");
  45.         break;
  46.         case DIR_LEFT:
  47.         Serial.println("LEFT");
  48.         Keyboard.press(KEY_LEFT_ARROW);           //键盘左键按下</div><div align="left">        delay(100);
  49.         Keyboard.releaseAll();
  50.         break;
  51.         case DIR_RIGHT:
  52.         Serial.println("RIGHT");</div><div align="left">        Keyboard.press(KEY_RIGHT_ARROW);        //键盘右键按下</div><div align="left">        delay(100);
  53.         Keyboard.releaseAll();</div><div align="left">        break;</div><div align="left">        case DIR_NEAR:
  54.         Serial.println("NEAR");
  55.         break;
  56.         case DIR_FAR:
  57.         Serial.println("FAR");
  58.         break;
  59.         default:
  60.         Serial.println("NONE");
  61.     }
  62.   }
  63. }
  64. </div>
复制代码

程序分析:

该程序直接选用RGB手势传感器的库的样例程序。导入RGB手势传感器库以后选择
File>>Examples>>SparkFunAPDS9960>>GestureTest

这里只修改了样例程序中的中断编号,以及增加了arduino USB键盘类函数。 因为USB键盘类库为arduino的默认库,因此不需要导入。



函数:attachInterrupt(interrupt, function, mode)
功能:对中断引脚进行初始化配置
参数:
interrupt,中断编号,注意,这里的中断编号并不是引脚编号。
function, 中断函数名,当中断被触发后即会运行此函数名称所代表的中断函数
mode, 中断模式。

可用的中断触发模式
妈妈再打我一次--双十一特辑图5
常见Arduino控制器的中断编号
妈妈再打我一次--双十一特辑图6


函数:Keyboard.begin()
功能:开始模拟键盘

函数:Keyboard.press(char)
功能:按下按键。当调用该函数时相当于在键盘上按下一个按键并保持。注意如果需要有释放该按键动作,需要使用Keyboard.release()或者Keyboard.releaseAll()函数。
语法:Keyboard.press(key)
参数:key,需要按下的按键。

这里给出几个常用的按键参数:

妈妈再打我一次--双十一特辑图4



函数:Keyboard.releaseAll()
功能:  释放之前调用press(char)函数按下的所有按键。
语法:Keyboard.releaseAll()
返回值:释放的按键个数

测试视频


附件:


    RGB手势传感器库 下载附件SparkFun_APDS9960.zip

Ash  管理员

发表于 2015-11-13 11:06:48

哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
让我先去笑一会儿



回复

使用道具 举报

Boris_Liu  中级技师
 楼主|

发表于 2015-11-13 13:48:18

Ash 发表于 2015-11-13 11:06
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
哈哈哈哈哈 ...

突然发现自己某宝的待收货一栏还有好多项啊。哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
回复

使用道具 举报

Boris_Liu  中级技师
 楼主|

发表于 2015-11-13 13:41:12

hnyzcj 发表于 2015-11-13 12:23
这东西确实很好,对手挥舞的速度有要求吗?我看楼主视频中一开始好像慢慢的。 ...

哈哈,这个传感器对手势的识别率很高的,适用于绝大多数手势的速度。视频的后边就加速打脸了。
回复

使用道具 举报

Ricky  NPC

发表于 2015-11-12 23:44:08

视频挂了。。。
回复

使用道具 举报

丄帝De咗臂  高级技匠

发表于 2015-11-13 07:49:03

这个传感器确实强大
回复

使用道具 举报

大连林海  初级技神

发表于 2015-11-13 08:54:29

很强大的传感器  有机会来一个玩玩
回复

使用道具 举报

hnyzcj  版主

发表于 2015-11-13 12:23:03

这东西确实很好,对手挥舞的速度有要求吗?我看楼主视频中一开始好像慢慢的。
回复

使用道具 举报

heinau  高级技匠

发表于 2015-11-13 13:55:43

Boris_Liu 发表于 2015-11-13 13:48
突然发现自己某宝的待收货一栏还有好多项啊。哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 ...

哈哈哈哈哈哈哈视频的效果好有喜感
楼主这是双十一剁手有感吗
回复

使用道具 举报

Ash  管理员

发表于 2015-11-13 14:45:11

Boris_Liu 发表于 2015-11-13 13:48
突然发现自己某宝的待收货一栏还有好多项啊。哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 ...

我的还在待发货  
回复

使用道具 举报

苦海  初级技匠

发表于 2015-11-13 19:58:39

赶紧做一个挡别人抽脸的假手, 有需求!!!
回复

使用道具 举报

苦海  初级技匠

发表于 2015-11-13 19:59:34

苦海 发表于 2015-11-13 19:58
赶紧做一个挡别人抽脸的假手, 有需求!!!

我隔壁小孩期中考没及格 痛点在脸上 而且非常痛 !!!
回复

使用道具 举报

jczaza  初级技师

发表于 2015-11-13 21:27:15

手剁没了,可以用脚吗
回复

使用道具 举报

dsweiliang  初级技神

发表于 2015-11-14 00:45:06

电路连接图是怎样画出来的啊
回复

使用道具 举报

吹口琴的钢铁侠  初级技匠

发表于 2015-11-14 09:36:10

dsweiliang 发表于 2015-11-14 00:45
电路连接图是怎样画出来的啊

用的fritzing吧
回复

使用道具 举报

tyjjr  中级技匠

发表于 2015-11-16 01:41:19

这神奇是什么原理...
回复

使用道具 举报

zoe  中级技师

发表于 2015-12-4 16:55:21

这明明就是抚摸
回复

使用道具 举报

luna  初级技神

发表于 2015-12-10 10:57:43

棒呆了!是腾讯视频~~微信一键转发
回复

使用道具 举报

王子麒  初级技师

发表于 2016-10-7 20:16:55

恍恍惚惚红红火火
回复

使用道具 举报

bigdulldog  见习技师

发表于 2016-12-31 14:15:12

能用这个做一个手势控制小车吗?
回复

使用道具 举报

O_oYYQ  高级技师

发表于 2017-1-3 10:50:58

楼主这个能分辨左右手嘛  就是左手右挥  左手左挥这种
回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail