调戏悟空排解压力装置
本帖最后由 Boris_Liu 于 2015-12-14 17:20 编辑
调戏悟空排解压力装置
<img oldoldsrc="http://images.ncnynl.com/arduino/2016/static/image/smiley/chacha/25.gif" smilieid="138" border="0" alt="" /><img oldoldsrc="http://images.ncnynl.com/arduino/2016/static/image/smiley/chacha/53.gif" smilieid="140" border="0" alt="" />时间嗖一下就过去了,2015年的尾声已经临近。羊年即将过去,猴年就要到来。
日子过得虽快,心态总归要放好的。
手里正好有DFrobot推出的两款新品神器。0.5寸OLED液晶屏幕和手势传感器,准备制作一款猴年的解压互动装置,放松心态,迎接新年。
先上一个不带外壳的效果
一,零件清单:
红外手势传感器(带RGB/环境光检测) X1
0.5英寸OLED显示屏 X1
Beetle控制器(兼容Arduino Leonardo) X1
LR44纽扣电池盒 3颗装 X1
备注:以上配件均可以在DFRobot商城购买。
二,电路连线图
AAAAAA.png (49.98 KB, 下载次数: 8)
下载附件
保存到相册
2015-12-10 15:46 上传
三,工作原理图
path6361-2.png (49.92 KB, 下载次数: 8)
下载附件
保存到相册
2015-12-10 15:46 上传
四,3D外壳模型
悟空A面.jpg (56.19 KB, 下载次数: 8)
下载附件
保存到相册
2015-12-10 16:03 上传
正面外壳
悟空B面.jpg (60.87 KB, 下载次数: 8)
下载附件
保存到相册
2015-12-10 16:03 上传
背面外壳
悟空底盖.jpg (57.15 KB, 下载次数: 8)
下载附件
保存到相册
2015-12-10 16:03 上传
底部外壳
五,程序与硬件回顾:
1,手势传感器
挥手传感器.jpg (36.37 KB, 下载次数: 8)
下载附件
保存到相册
2015-12-10 16:15 上传
硬件信息提示:
集手势,光源强度、颜色识别为一体,尺寸却只有指甲盖那么大。RGB手势传感器采用的是I2C通讯,同时在监测到有手势的动作时,INT输出一个低电平,用于触发中断。因此将传感器的I2C Pin脚(SDA、SDL)与控制器的Pin脚连接即可,本例中断Pin脚选择(D0)。
安利下leonardo类控制板的中断引脚为(D0,D1,D2,D3),其中I2C对应的引脚为(D2,D3).因为这款手势传感器同时使用了I2C 和中断,为了避免冲突。所以只能选择D0和D1作为中断的引脚。
相关代码:
函数:attachInterrupt(interrupt, function, mode)功能:对中断引脚进行初始化配置
参数:
interrupt,中断编号,注意,这里的中断编号并不是引脚编号。
function, 中断函数名,当中断被触发后即会运行此函数名称所代表的中断函数
mode, 中断模式。
可用的中断触发模式
214337yn9pp9qk6pkp7kqz.jpg (41.89 KB, 下载次数: 8)
下载附件
保存到相册
2015-12-10 16:44 上传
常见Arduino控制器的中断编号
215407xnknnrjcazlayfby.jpg (28.44 KB, 下载次数: 8)
下载附件
保存到相册
2015-12-10 16:45 上传
函数:apds.readGesture()功能:读取手势的信息
参数:无返回值: UP 向上挥手 DOWN 向下挥手 LEFT 向左挥手 RIGHT 向右挥手 FAR 手势由近到远 NONE 无法识别的手势
2. 0.5寸OLED屏幕
OLED.jpg (55.14 KB, 下载次数: 8)
下载附件
保存到相册
2015-12-10 16:26 上传
硬件提示
这是一款非常小巧的OLED显示屏,只有0.5英寸左右,像素为60*32,只相当于你的指甲盖一般大小. 每个像素都可以由控制芯片单独控制,可以组合任意的图形,显示任意的图像和文字。并且自发光OLED显示屏,并不需要背光,极大地减少了屏幕运行时所需的电量。
本款OLED显示屏采用模拟SPI通信,需要占用5个控制器引脚。
如何用OLED 屏幕显示任意图形
a,打开InkScape 软件。 选择 文件>>文档属性。
在自定义尺寸一栏,选择宽度为56,长度为32.单位选为PX
inkscape.jpg (85.38 KB, 下载次数: 8)
下载附件
保存到相册
2015-12-10 17:12 上传
b,绘制所需图形,并保存为PNG格式
QQ截图20151210171648.jpg (55.84 KB, 下载次数: 8)
下载附件
保存到相册
2015-12-10 17:17 上传
c,用画图软件打开,并另存为BMP格式。
画图.jpg (78.62 KB, 下载次数: 8)
下载附件
保存到相册
2015-12-10 17:25 上传
d,得到图片对应的数据代码
在取模软件(字模提取V2.2)中打开所保存的BMP格式文件。设置取模方式设置为:“横向取模,字节倒序”, 单击选择“C51格式” 图片下方即会出现该图片对应的数据代码。
QQ截图20151210173033.jpg (177.8 KB, 下载次数: 8)
下载附件
保存到相册
2015-12-10 17:30 上传
e,编写代码
在Arduino程序中新建一个供显示专用的数组bitmap[]用于保存这些数据,数据的定义方式如下: static unsigned char bitmap[] u8g_PROGMEN={ //通过取模得到的位图数据。 }
要显示该位图数组,会用到drawXBMP() 函数 函数:drawXBMP(x,y,width,height, bitmap) 功能:显示位图数组 参数: x,y为所绘制图形的左上角的位置。 width,height为所绘制图形的宽度和长度。 bitmap为数组名
3. Beetle控制器
400px-Beetle_face45_pic.jpg (23 KB, 下载次数: 8)
下载附件
保存到相册
2015-12-10 17:56 上传
Beetle是Arduino Leonardo的极简版本,具备和Leonardo类似的强大应用能力,特别适于一次性的DIY项目制作和可穿戴电子应用。
考虑到本次应用需要使用较多的引脚,所以我们需要挖掘下Beetle的潜力。
g28538.png (54.03 KB, 下载次数: 8)
下载附件
保存到相册
2015-12-10 19:32 上传
查询Beetle版的电路原理图,我们可以在Beetle的ICSP接口处发现小惊喜,ICSP的MISO引脚对应控制器的D14, SCK对应D15, MOSI对应D16。
为补充后续细节,帖子还在编辑中。。。。。。。先占个坑。