基于51单片机的APDS9960 驱动
传感器简介
APDS-9960传感器具有先进的手势检测、接近检测、数字环境光感(ALS)和色感(RGBC)。
针脚名称 | 描述 |
---|---|
VL | IR LED供电选项(PS跳线断开) 必须是3.0 - 4.5V |
GND | 接地 |
VCC | 给模块供电 范围 2.4-3.6V |
SDA | I2C数据线 |
SCL | I2C时钟线 |
INT | 中断事件引脚(需要配置模块) |
注意:
模块上有 PS 以及 IIC PU的焊点 其中PS是两个焊点 IIC PU是三个焊点
PS----> 如果两个焊点没有通过焊锡连接在一起,那么就需要给VL引脚供电。因为这个的功能就是给IR LED供电的,如果你没有连接在一起也没有给VL供电,那么模块就不能正常检测,我就被这个坑了很久,因为买模块的时候厂家不一定会给你焊上,注意!!!
IIC PU----> 将三个焊点用锡全焊起来意味着给IIC SDA SCL加上上拉电阻,尽量还是焊起来
手势识别距离说明: 上下左右手势检测距离最好在3cm以内,远离及靠近在10cm内有效
此代码只用到 IIC两个引脚 INT及VL都悬空不接
实物图:
这里我只实现了上下左右 远离 靠近 的手势检测,数字环境光感(ALS)和色感(RGBC)我则没有去实现,我粗略的写了RGBC的数据读取,发现读取出来的数据不够严谨, RGB的数值会根据光照的强度来变换,实际上的运用只能说比较三个值的大小来判断检测到的颜色是偏向红蓝绿哪种。并不是真的检测出RGB数值来,所以意义不是非常大
主要代码展示:
//实际获取以及初始化手势模块
uchar ad9s9960_GestureParse(void)
{uchar State = 0;if(Flag_SystemInit == 0){Flag_SystemInit = APDS9960_Init();if (Flag_SystemInit == 1){APDS9960_Gesture_EN(1);}}if (Flag_SystemInit == 1){State = APDS9960_Gesture_Get_State();}return State;
}//显示以及调用手势获取函数
//获取数据
void Get_Dat()
{uchar Get_Dat;//获取手势值Get_Dat = ad9s9960_GestureParse();//将有效手势显示出来if(Get_Dat != 0)Dat_Apds = Get_Dat;Dis_Dat();
}//显示 数据
void Dis_Dat()
{static uchar Fd;if(menu == 0){//显示手势值LCD_Write_Number(4, 0, Dat_Apds, 1);Fd++;LCD_Write_Number(4, 1, Fd, 3);//手势值对应手势switch(Dat_Apds){case 0:LCD_Write_String(11, 1, "NONE ");break;case 1:LCD_Write_String(11, 1, "LEFT ");Led1 = 0;break;case 2:LCD_Write_String(11, 1, "RIGHT");Led1 = 1;break;case 3:LCD_Write_String(11, 1, " UP ");Led2 = 0;break;case 4:LCD_Write_String(11, 1, "DOWN ");Led2 = 1;break;case 5:LCD_Write_String(11, 1, "NEAR ");Led3 = 0;break;case 6:LCD_Write_String(11, 1, " FAR ");Led3 = 1;break;default:break;}}
}
提供资料图示:
说明:
1.编号1的库除了不能检测到远近外,是最好用的,因为不会卡住在手势获取函数中
也能解析几秒前执行完的动作
2.编号2的库,如果你的代码中,主要功能就是手势控制开关,那么可以考虑使用这个库
因为你能将多数的资源时间给手势获取的函数。但是如果你无法保证调用函数的间隔时间
那么还是不要用这个库,因为用不好可能会导致什么手势都获取不到
3.编号3的库,也能解析几秒前执行完的动作,并且能解析出远离和靠近 ,
但是模块前方如果有遮挡物的话,会导致程序一直在手势获取函数里,这个需要特别注意!!
在当模块检测到物体时,会一直在手势获取函数里面解析数据,直到解析出手势来
获取手势间隔越短,使用体验越好
视频展示:
手势检测功能演示
更详细代码视频讲解及代码下载请看:
【51模块库】APDS-9960 手势检测模块 驱动代码+使用范例_哔哩哔哩_bilibili
基于51单片机的APDS9960 驱动相关推荐
- 74hc164驱动数码管c语言程序,基于51单片机的74HC164驱动数码管显示程序与仿真
基于51单片机的74HC164驱动数码管显示程序与仿真 基于51单片机的74HC164驱动一位数码管显示程序与仿真 #include #include #define uchar unsigned c ...
- 基于51单片机的OLED驱动方式(iic通讯方式)
基于51单片机的OLED驱动方式(iic通讯方式) 前言: 本人从事硬件开发,自学软件,因为发现在学习过程中,有很多问题对于没有项目实战经验的新手来讲太难解决了,可以说基本上是无从下手.现将自己学习过 ...
- 基于51单片机驱动A4988实现步进电机逆时针转动
基于51单片机驱动A4988实现步进电机逆时针转动 一.简介 二.接线 典型接线图 实际接线 三.部分代码 引脚定义 定时器初始化 主函数 四.实验现象 五.注意事项 一.简介 A4988 是一款完全 ...
- 基于51单片机驱动HC-SR04超声波模块(LCD1602显示)
基于51单片机驱动HC-SR04超声波模块(LCD1602显示) 一.基本参数 二.通信时序 三.部分代码展示 四.实际效果 总结 一.基本参数 点击图片购买 HC- SR04+是一款宽电压工作的超声 ...
- 基于51单片机驱动ADXL346 (LCD1602显示)
基于51单片机驱动ADXL346 (LCD1602显示) 一.ADXL346传感器介绍 1.实物图 2.产品说明 3.电气参数 4.通信协议 二.驱动代码 1.引脚定义 2.初始化函数 3.主函数 三 ...
- nRF24L01+基于51单片机的驱动(库)实战代码分享
nRF24L01+基于51单片机的驱动(库)实战代码分享 关于代码来源 定义数据类型的头文件Type.h nRF24L01+驱动源代码文件nRF24L01P.c nRF24L01+驱动的头文件nRF2 ...
- 基于51单片机+TB6600驱动板+42步进电机实现角度可调、速度可调的周期运动
硬件部分 1.51单片机.TB6600驱动板.42步进电机,直流电源(9~42V都可以,推荐24V) 2.实物连接图 TB6600驱动器的细分设置为6400,电流设置为1.5A(42步进电机) 本次试 ...
- 2022-4-9 基于51单片机驱动直流电机(L293D)(公众号:风吹摇铃 奔赴星海)
基于51单片机的直流电机驱动 仿真软件为Proteus8.10 编程软件为keil4 系统组成:单片机最小系统.四位共阳极数码管.三个独立按键.直流电机.L293D芯片. 系统功能:又三个按键控制 ...
- 单片机c语言计数器测速,基于51单片机的光电编码器测速.doc
课程设计报告 课程名称: 微机原理课程设计 题 目: 基于51单片机的光电编码器测速 摘要 光电编码器是高精度位置控制系统常用的一种位移检测传感器.在位置控制系统中,由于电机既可能正转,也可能反转,所 ...
最新文章
- Levenshtein distance最小编辑距离算法实现
- Python+Django+Nginx+Uwsgi(史上最全步骤)(亲测)
- 小翔和泰拉瑞亚(线段树+思维)
- OS-鸿蒙系统-以及编译器
- ASP.NET Core - 基于IHttpContextAccessor实现系统级别身份标识
- 计算机几何学论坛,现代几何学与计算机科学-中国计算机学会.pdf
- Visual Studio 2008 每日提示(六)
- NVIDIA边缘AI服务
- 2.1Android底层开发需要哪些工具
- 设计模式(2)——观察者模式
- 当web应用包含了websocket长连接,如何在web应用前加一层nginx转发
- Wireshark 设置中文
- 运维python要掌握到什么程度_《运》字意思读音、组词解释及笔画数 - 新华字典 - 911查询...
- 非法破坏计算机系统罪宣判,以非法经营罪提起公诉。法庭未当庭宣判。为什么不会被定破坏计算机信息系统罪呢?...
- java currency 默认_Java Currency.equals方法代码示例
- 三元表达式(三目运算)
- 安卓恶意应用代码分析
- Mac npm6.10.3包管理器下载依赖并运行项目的步骤
- java2019面试题北京
- 电脑桌面云便签Windows版怎么退出软件?
热门文章
- Telephone dialer
- 555定时器的原理与应用(1.1)
- vue *** is not a function 解决
- SAM9G45死机问题
- python有哪几种模块_python常用模块有哪些?
- 蚂蚁金服智能推荐引擎解决方案与实践 1
- JAVA访问修饰符限制性最高的_问:JAVA中,访问修饰符限制性最高的是protected ( )...
- 控制台也能炫-chrome浏览器控制台输出彩色文字
- 项目的前期——产品需求分析
- 服务器可以指定一个网卡只和某个地址通信吗_彻底搞懂计算机网络通信设备与协议...