| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> ADNS5050驱动程序(Arduino) -> 正文阅读 |
|
[嵌入式]ADNS5050驱动程序(Arduino) |
????????这个是一个用来做位移传感用的,精确度差不多能到0.02mm,但1mm都够用了,所以各种性能溢出,主要还是驱动吧。说起驱动,其实没什么的,就是按照DataSheet去写而已。只要你看DataSheet就能写出来,上面各个引脚的作用,电路图,每个寄存器的作用都写得明明白白(不过确实有些不很好理解的,例如图像的读取部分写得就比较模糊,但是这个功能就是拿来玩吧,光流传感器都已经把位移处理的非常好了,何必自己找那个麻烦,又滤波又融合的,结果还没人家自己算的好,呵呵了)。 一、读DataSheet ????????这部分非常重要,包括SPI通讯的各种设置以及电路连接(A5050是MSIO,IO是同一个口,需要你分成两根连Arduino的MSI和MSO,有一说用4K7和1K电阻的,我用了,但DataSheet上的电路图上并没有用。中间掉进去的最大坑是LED,用了杂牌垃圾LED,导致度数不断的上窜下跳,反复检查驱动之后发现没问题,于是换了某品牌(确实金线很清晰)的符合DataSheet上说的650nmLED问题解决。LED的限流电阻还是要的,算了一下发现没有合适的,用了个100欧的将就着,开了好久也没烧就当没问题了。有条件最好还是按DataSheet的电路图做。 二、电路连接 ? ? ? ? 不想上图了,发注释: 在NRESET和 + 5V之间焊接10K 欧姆电阻 XY_LED?? ?O?? ?——?? ??? ??? ??? ??? ??? ??? ?LED控制 照明LED要求HLMP-ED80(639nm) 凡是标了连接的都必须连接,需要注意的是XY_LED这个端口接的是LED的负极(抄DataSheet)。 三、写驱动 ? ? ? ? DataSheet上有好多寄存器,用到的其实不多,因为固定CPI可以简化代码,所以没写那么多函数和常量。要达成的目的就这么几个: 0、控制CPI(默认500,设置为1000) 1、读Dx,Dy 2、读图像(玩的,根本没用到) 3、为了图像的灰度稳定性设置LED_DC_MODE寄存器,可以让LED常亮而不是自动亮度 这些的基础都是寄存器读写,至少你要能理解这种通讯模式下读写的方式才行,不理解的问问度娘吧。 a、读寄存器、DataSheet里写的很清楚MSB为0时是读
b、写寄存器
很懒,延时什么的写的差不多一样,延时多少也是读DataSheet,注意它里面的单位us,ms啥啥都有,自己算一下,代码里写到够用就行。 有了这两个就差不多了,加个初始化: c、
这些都是DataSheet要求的,上面的图示说的很清楚,按照它设置就可以了,频率嘛应该可以支持的高一点,但高有什么用呢,够用就行。 然后就是Dx,Dy的偏移了,这个东西只要你读的快,它就不会溢出。另外关于类型的转化问题,寄存器里读回来的都是uint_8,即无符号8位,然后DataSheet上有个图,跟你说的很清楚几代表的是几,所以不要巴拉巴拉的一大堆又补码又啥的,直接把uint_8赋值给int_8就是正确的值了(不要怀疑,同长度直接把内容拿过来,值自然就符合DataSheet上说的)。
d、最后,就是玩的了,可能玩的更吸引人? ? ? ? ? DataSheet上有一个大篇幅的光流传感器读图像的描述。但是我真的理解了好几次才理解上去,他并不是说你每次读19*19=361,而是说你读361个MSB为1的是一幅图像。所以边读边舍弃MSB为0的直到读满361次就是一个图像,而DataSheet上说任何写入都咋的咋的,我的理解就是它进行了一个重新初始化的过程,并且当你下次读回来的为0时说明初始化完成可以读取了。
所以每次读图像之前我都写了个0进去,可能这不是必要操作。然后?读就好了啊。最后,可能需要用到SQUAL(表面质量)寄存器,这个应该是意味着这个值比较好的时候数据才是可信的。所以才有人给这玩意套了个镜头改善近视之后就当不近视了吧,具有好的增益和滤波电路的还好,不然就自然照度下能识别成什么德行还真不好说。 ? ? ? ? 本来还买了ADNS3050的(这货在某宝上比5050还贵不少),但是丢件大家都理解,所以就没写这货的驱动。能驱动光流传感器、有了Arduino可以自己做鼠标了,Arduino有鼠标键盘库,可以发送移动、点击,虽然EEPROM小点,但存若干个简单的自动化脚本一点问题也没有,自己写个WINDOWS程序和串口通讯一下,就能实现可编程鼠标了。给Arduino连根线,点击切换功能,让某个功能时左键按下则额外发送鼠标移动就自动压枪了,某个功能时开始录制脚本(鼠标按下时统计总dx,dy偏移),写入EEPROM,播放时插入随机移动,规定模拟时和录制点击点的偏移在一个范围内,做成一个不需要WINDOWS程序的自动录制宏鼠标有那么难吗?兴趣上来了?那就去试试! |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 6:24:36- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |