如何从颜色传感器获取颜色数据

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

有关硬件如何工作的更多信息,请阅读以前的文章或访问Pmod颜色参考手册.这里我们将重点讨论如何在软件中启动和运行它。

快速开始与Pmod颜色

下面,您将看到一组从Pmod COLOR的I2C总线获取数据所需的命令。

  1. 上电Pmod COLOR。
  2. 提供一个START条件,用一个写位调用设备ID

    I2CBegin (0 x52);//设备ID 0x29,写(0)位
  3. 等待收到来自Pmod COLOR的ACK。
  4. 提供一个命令来维护指针地址或使用Enable寄存器(0x00)

    I2CWrite (0 xa0);//保持指针地址在Enable寄存器
  5. 等待收到来自Pmod COLOR的ACK。
  6. 发送使能地址并使能振荡器。

    I2CWrite (0 x01);//0x01启用定时器和ADC通道的振荡器
  7. 在开始数据采集之前,至少延迟2.4 mS。
  8. 发送启用地址,并启用所有4个通道的adc。

    I2CWrite (0 x02);//0x02开启ADC通道
  9. 等待从Pmod COLOR接收到一个ACK,然后发送一个STOP条件。
  10. 对于准备数据测量的adc来说,延迟为2.4 ms,默认情况下,数据采集过程中的集成时间至少为2.4 ms。
  11. 发送一个START条件并调用带有写位的设备ID

    I2CBegin (0 x52);//设备ID 0x29,写(0)位
  12. 等待收到来自Pmod COLOR的ACK。
  13. 提供一个命令,使用第一个数据寄存器自动增加地址指针OR 'd (0x14)

    I2CWrite (0 xb4);//从清除数据低字节寄存器开始自动递增指针地址
  14. 等待收到来自Pmod COLOR的ACK
  15. 提供一个RESTART条件,用一个读位调用设备ID

    I2CBegin (0 x53);//设备ID 0x29,读(1)位
  16. 等待收到来自Pmod COLOR的ACK。
  17. 收集与clear、red、green和blue数据的low和high数据字节寄存器对应的所有8个数据字节,每个字节之间等待Pmod Color的ACK。

    I2CReadMultiple (8);//读取8个数据寄存器,利用自动递增指针
  18. 发送一个STOP条件。

如果你想看到实现上述步骤的完整程序,请转到Pmod COLOR资源中心.这里有一个例子Arduino程序以及链接到我们的Pmod IP核心教程用于快速拖放使用Microblaze设计。此外,我们的一位应用工程师在我们新的Digilent项目网站上创建了一个演示,projects.blog.digilentinc.com,使用Pmod COLOR IP核和Zybo板使用Python显示颜色读数。

如有任何问题或意见,请访问Digilent论坛或者在下面的评论区留言!

0
第一个投票。

留下一个回复

您的电子邮件地址将不会被公布。必填字段被标记