上周我们介绍了Pmod COLOR,我们最新的传感器Pmod。Pmod COLOR是一种色光传感器,顾名思义,它通过一个简单的I2C总线来传递红、蓝、绿(RGB)和透明(非滤光)光的强度。它是为近距离使用而设计的,非常适合对象分类,色温测量和比色法应用程序。

有关硬件如何工作的更多信息,请阅读以前的文章或访问Pmod颜色参考手册.这里我们将重点讨论如何在软件中启动和运行它。
快速开始与Pmod颜色
下面,您将看到一组从Pmod COLOR的I2C总线获取数据所需的命令。
-
上电Pmod COLOR。
-
提供一个START条件,用一个写位调用设备ID
I2CBegin (0 x52);//设备ID 0x29,写(0)位
-
等待收到来自Pmod COLOR的ACK。
-
提供一个命令来维护指针地址或使用Enable寄存器(0x00)
I2CWrite (0 xa0);//保持指针地址在Enable寄存器
-
等待收到来自Pmod COLOR的ACK。
-
发送使能地址并使能振荡器。
I2CWrite (0 x01);//0x01启用定时器和ADC通道的振荡器
-
在开始数据采集之前,至少延迟2.4 mS。
-
发送启用地址,并启用所有4个通道的adc。
I2CWrite (0 x02);//0x02开启ADC通道
-
等待从Pmod COLOR接收到一个ACK,然后发送一个STOP条件。
-
对于准备数据测量的adc来说,延迟为2.4 ms,默认情况下,数据采集过程中的集成时间至少为2.4 ms。
-
发送一个START条件并调用带有写位的设备ID
I2CBegin (0 x52);//设备ID 0x29,写(0)位
-
等待收到来自Pmod COLOR的ACK。
-
提供一个命令,使用第一个数据寄存器自动增加地址指针OR 'd (0x14)
I2CWrite (0 xb4);//从清除数据低字节寄存器开始自动递增指针地址
-
等待收到来自Pmod COLOR的ACK
-
提供一个RESTART条件,用一个读位调用设备ID
I2CBegin (0 x53);//设备ID 0x29,读(1)位
-
等待收到来自Pmod COLOR的ACK。
-
收集与clear、red、green和blue数据的low和high数据字节寄存器对应的所有8个数据字节,每个字节之间等待Pmod Color的ACK。
I2CReadMultiple (8);//读取8个数据寄存器,利用自动递增指针
-
发送一个STOP条件。
如果你想看到实现上述步骤的完整程序,请转到Pmod COLOR资源中心.这里有一个例子Arduino程序以及链接到我们的Pmod IP核心教程用于快速拖放使用Microblaze设计。此外,我们的一位应用工程师在我们新的Digilent项目网站上创建了一个演示,projects.blog.digilentinc.com,使用Pmod COLOR IP核和Zybo板使用Python显示颜色读数。
如有任何问题或意见,请访问Digilent论坛或者在下面的评论区留言!
