39849| 56
|
[进阶] 调戏悟空排解压力装置 |
调戏悟空排解压力装置 日子过得虽快,心态总归要放好的。 手里正好有DFrobot推出的两款新品神器。0.5寸OLED液晶屏幕和手势传感器,准备制作一款猴年的解压互动装置,放松心态,迎接新年。 先上一个不带外壳的效果 一,零件清单: SEN0187 红外手势传感器(带RGB/环境光检测) X1 0.5英寸OLED显示屏 X1 DFR0282 Beetle控制器(兼容Arduino Leonardo) X1 LR44纽扣电池盒 3颗装 X1 备注:以上配件均可以在DFRobot商城购买。 二,电路连线图 三,工作原理图 四,3D外壳模型 正面外壳 背面外壳 底部外壳 五,程序与硬件回顾: 1,手势传感器 硬件信息提示: 集手势,光源强度、颜色识别为一体,尺寸却只有指甲盖那么大。 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, 中断模式。 可用的中断触发模式 常见Arduino控制器的中断编号 函数:apds.readGesture() 参数:无 返回值: UP 向上挥手 DOWN 向下挥手 LEFT 向左挥手 RIGHT 向右挥手 FAR 手势由近到远 NONE 无法识别的手势 2. 0.5寸OLED屏幕 硬件提示 这是一款非常小巧的OLED显示屏,只有0.5英寸左右,像素为60*32,只相当于你的指甲盖一般大小. 每个像素都可以由控制芯片单独控制,可以组合任意的图形,显示任意的图像和文字。并且自发光OLED显示屏,并不需要背光,极大地减少了屏幕运行时所需的电量。 本款OLED显示屏采用模拟SPI通信,需要占用5个控制器引脚。 如何用OLED 屏幕显示任意图形 a,打开InkScape 软件。 选择 文件>>文档属性。 在自定义尺寸一栏,选择宽度为56,长度为32.单位选为PX b,绘制所需图形,并保存为PNG格式 c,用画图软件打开,并另存为BMP格式。 d,得到图片对应的数据代码 在取模软件(字模提取V2.2)中打开所保存的BMP格式文件。设置取模方式设置为:“横向取模,字节倒序”, 单击选择“C51格式” 图片下方即会出现该图片对应的数据代码。 e,编写代码 在Arduino程序中新建一个供显示专用的数组bitmap[]用于保存这些数据,数据的定义方式如下: static unsigned char bitmap[] u8g_PROGMEN={ //通过取模得到的位图数据。 } 要显示该位图数组,会用到drawXBMP() 函数 函数:drawXBMP(x,y,width,height, bitmap) 功能:显示位图数组 参数: x,y为所绘制图形的左上角的位置。 width,height为所绘制图形的宽度和长度。 bitmap为数组名 3. Beetle控制器 Beetle是Arduino Leonardo的极简版本,具备和Leonardo类似的强大应用能力,特别适于一次性的DIY项目制作和可穿戴电子应用。 考虑到本次应用需要使用较多的引脚,所以我们需要挖掘下Beetle的潜力。 查询Beetle版的电路原理图,我们可以在Beetle的ICSP接口处发现小惊喜,ICSP的MISO引脚对应控制器的D14, SCK对应D15, MOSI对应D16。 为补充后续细节,帖子还在编辑中。。。。。。。先占个坑。 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed