拿到颜色传感器蛮久了,其实早写好了底层驱动,但是一直没有发帖,今日终于有时间写帖子,与大家分享一下我的开发过程
---------------------------------------------------------------------------------------------------------------------------
没有申请底板真的是比较麻烦的,因为例程是arduino的,但是我手头并没有arduino的板子,于是没办法,只好用51模拟IIC,自己重新写底层,配置寄存器,参照例程数据处理过程对读取的12组8位数据进行处理
----------------------------------------------------------------------------------------------------------------------------
先上几个底层驱动,适用于51单片机
颜色传感器初始化
初始化解释:Mode1:0x2a配置了IR_GAIN = x1 Gain Mode RGB_GAIN = x1 Gain Mode MEASUREMENT MODE = 120ms Mode
Mode2:0x10配置了RGB_EN = Measurement is active.
颜色传感器读取颜色值
根据数据手册通信过程得到,需要注意的是在调用该函数时根据需根据Mode1的配置进行延时,给予充分的测量时间
颜色传感器数值计算
根据官网例程源码得到,拼接了两个8位缓存数据为16位的正常数据
-------------------------------------------------------------------------------------------------------------------------
再来分析一下通信过程
采用IIC通信,不了解详细过程的可以百度一下,资料很多的
此处放上采集的通信过程
颜色传感器
初始化通信
对
红色光源时的通信数据
对
绿色光源时的通信数据
对
蓝色光源的通信数据
-----------------------------------------------------------------------------------
最后放几张成品图,LCD屏幕太小了,就只放了RGB三个数据,IR和G2被我省略掉了,如果有需要的直接加上显示就行
拍照技术太烂,各位看官见谅
--------------------------------------------------------------------------------------------
小结:
尽管经测试可以正常工作,但仍会出现偶尔宕机的现象,我没有仿真,不太清楚问题出在哪里
STM32移植中,实现使用OLED输出颜色分解值,但是STM32的IIC硬件太脆弱了,经常性宕机
本帖可能会回来debug,源码暂不开放,待我debug完再说
感谢罗姆半导体赠与的传感器!
有什么问题欢迎提出,一起学习!