调戏悟空排解压力装置

本帖最后由 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。

为补充后续细节,帖子还在编辑中。。。。。。。先占个坑。

标签: Arduino教程