6171| 11
|
手势传感器试用+【组合2开箱照】 |
第一次在DFROBOT申请试用,激动~! @luna 申请的项目是偶然之间的想法,感觉有了个很好的契机去做出来 下面是开箱图 @DFRobot ,收到df和蘑菇云2个徽章~ 二号试用套装,分别是Leonardo&xbee和手势传感器 第一次试用leonardo,确实存在一些和uno不同的地方,不过也无大碍 关键还是这次的手势传感器 按照官方给的指南,戳这里, 连接线,采用3v3和5v供电均可 刷入指南中给的测试代码 接下来就是测试手势传感的效果啦~! 左手.....正常......右手.....正常.....(好像并没有区别.....) 然后我受到了对面基友的无限鄙视的目光........ 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 ---------------------------------------------------------------------------------------------- (项目帖待更新) |
本帖最后由 nicho 于 2016-8-17 19:32 编辑 发现了一个小小的细节 @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]
怎么解决呢? 需要下面这两步: 修改: #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的话,就改成这样的 ---------------------------------------------------------------------- 这里描述的问题,其实在演示程序里面也有提及一些相关的注意事项,不过,一开始没有注意 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed