手势传感器试用+【组合2开箱照】

2016-08-177901
AI 快速预览详细 收起
本文介绍了作者首次在DFRobot申请试用手势传感器的经历。试用套装包含Leonardo和Xbee,支持3.3V和5V供电。按照官方指南连接并刷入测试代码后,测试了手势识别效果,包括上下左右及靠近/远离手势。总结出NEAR手势的实现方法是将手掌向传感器接近,最后做漂亮的漂移动作。整体灵敏度和准确度都表现不错,适合初学者和STEM教育。
第一次在DFROBOT申请试用,激动~!   @luna
申请的项目是偶然之间的想法,感觉有了个很好的契机去做出来



下面是开箱图  @DFRobot   ,收到df和蘑菇云2个徽章~

手势传感器试用+【组合2开箱照】图4手势传感器试用+【组合2开箱照】图1
手势传感器试用+【组合2开箱照】图3手势传感器试用+【组合2开箱照】图2


二号试用套装,分别是Leonardo&xbee和手势传感器
第一次试用leonardo,确实存在一些和uno不同的地方,不过也无大碍
关键还是这次的手势传感器

手势传感器试用+【组合2开箱照】图5

按照官方给的指南,戳这里,
连接线,采用3v3和5v供电均可

刷入指南中给的测试代码

手势传感器试用+【组合2开箱照】图6


接下来就是测试手势传感的效果啦~!
左手.....正常......右手.....正常.....(好像并没有区别.....)
然后我受到了对面基友的无限鄙视的目光........

    if ( apds.isGestureAvailable() ) {
    switch ( apds.readGesture() ) {
      case DIR_UP:
        Serial.println("UP");
        break;
      case DIR_DOWN:
        Serial.println("DOWN");
        break;
      case DIR_LEFT:
        Serial.println("LEFT");
        break;
      case DIR_RIGHT:
        Serial.println("RIGHT");
        break;
      case DIR_NEAR:
        Serial.println("NEAR");
        break;
      case DIR_FAR:
        Serial.println("FAR");
        break;
      default:
        Serial.println("NONE");
    }
  }
看测试例程,里面给出了6种手势,分别是上下左右和靠近/远离

然后,我整理好表情,对着传感器挥手



上下左右的敏感度还不错,太快和太慢都会被判断为NONE,至于FAR,手掌靠近,然后远离(速度稍微快一点点点点),然后还剩下一个NEAR.....

引用一下@svw 的心得~
不要用打耳光的速度,用做体操的速度,很容易试出来。

嗯.....呃....

总结出来的出现NEAR的经验就是,和FAR差不多的速度
将手掌向传感器接近,然后,最后的时候,离传感器比较近的时候(大概)
将手掌从传感器的正前方向侧面做一个漂亮的漂移(别拍到传感器上了),然后NEAR就出现啦...
呃...不知道有没有别的方法呢....嗯嗯嗯,.
.多试几次就有感觉啦~,灵敏度和准确度都挺不错的~
----------------------------------------------------------------------------------------------
颜色传感的方面,同一种颜色测试的波动如下,存在色差,但是判断色彩还是没问题的
Ambient: 130 Red: 71 Green: 43 Blue: 41
Ambient: 128 Red: 70 Green: 42 Blue: 41
Ambient: 129 Red: 69 Green: 43 Blue: 41
Ambient: 131 Red: 70 Green: 44 Blue: 42
Ambient: 129 Red: 70 Green: 43 Blue: 41

----------------------------------------------------------------------------------------------


(项目帖待更新)



创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(9)
heinau
heinau
打耳光的速度和做体操的速度哈哈哈哈哈哈!
真是好形象的比喻方式
凌风清羽
凌风清羽
围观好项目,哈哈~~~~
dsweiliang
dsweiliang
羡慕
visionsl
visionsl
占楼围观
qq815076543322
qq815076543322
不错哦 还有板子 和 传感器:'(
luna
luna
你和svw的标题一模一样,我都蒙了
luna
luna
nicho~项目和开箱照要分开发哦~~项目名称规范:"手势传感器试用+【自己制作的项目名称】"
luna
luna回复nicho
都怪我没有做个规范说明
nicho
nicho
作者
回复luna
马上改~
nicho
nicho
作者
占楼更新
nicho
nicho
作者
发现了一个小小的细节 @luna .........这一点在手势传感器的指南里面没有提及,就是关于传感器使用的SDA/SCL和中断引脚有冲突,(只针对Leonardo)
(我其实也是第一次用Leonardo,开箱的时候顺手拿了uno来测试,没有发现,后来用Leonardo的时候才发现出了问题)
去查了Leonardo的引脚图,INT0和INT1和SDA/SCl是同一个引脚,(和UNO不同,uno的int0和int1分别是d2和d3,SCL/SDA是A4和A5)
这就尴尬了,一开始没发现,指南里面的例程是针对UNO的...
// Pins
#define APDS9960_INT 2 // Needs to be an interrupt pin
这里的引脚定义是针对uno而设的,刷程序进Leonardo,一点反应都没有...应该是出现了"Something went wrong during APDS-9960 init!",不过由于Leonardo的天生限制,看不到这段文字(吧)
下面是中断的引脚对应表
[/td][/tr]
[table=50%]
[tr][td]型号[/td][td]int0[/td][td]int1[/td][td]int2[/td][td]int3[/td][td] [/td][td] [/td][/tr]
[tr][td]uno[/td][td]2[/td][td]3[/td][td] [/td][td] [/td][td] [/td][td] [/td][/tr]
[tr][td]leonardo[/td][td]3[/td][td]2[/td][td]0[/td][td]1[/td][td] [/td][td] [/td][/tr]
[tr][td][/td][td] [/td][td] [/td][td] [/td][td] [/td][td] [/td][td] [/td][/tr]
[tr][td] [/td][td] [/td][td] [/td][td] [/td][td] [/td][td] [/td][td] [/td][/tr]
[/table]
怎么解决呢?
需要下面这两步:
修改:
#define APDS9960_INT 2 // Needs to be an interrupt pin
为;
#define APDS9960_INT 0 // Needs to be an interrupt pin

#define APDS9960_INT 1 // Needs to be an interrupt pin
然后修改:
attachInterrupt(0, interruptRoutine, FALLING);

attachInterrupt(2, interruptRoutine, FALLING); //如果上一步修改的引脚是0的话,就改成这样的
或:
attachInterrupt(3, interruptRoutine, FALLING); //如果上一步修改的引脚是1的话,就改成这样的
----------------------------------------------------------------------
这里描述的问题,其实在演示程序里面也有提及一些相关的注意事项,不过,一开始没有注意
- 没有更多了 -