第5课:I2C颜色识别传感器 - TCS34725
学习内容
导语
想知道《人与自然》中变色龙是怎么变色的吗?想知道时下最流行的电子取色笔是怎么取色的吗?
不要多想,它们的原理很简单。大自然是人类最好的老师,很多奇趣创意的灵感都是从自然界的生物中获得的。
变色龙在经过几千万年的衍化后,形成了一种生物本能,可以通过变换皮肤的保护色完美隐藏在周边的环境中。这是一种从“取色”到“配色”的过程。
而现今的电子取色笔也是同样原理,通过检测物体的颜色,得到RGB三基色数值,再通过融合这些数值,调配出物体的颜色。就和小时候捏橡皮泥似得,在知道一定配比之后就能捏出你想要的颜色。
介绍I2C颜色识别传感器
TCS34725是一款低成本,高性价比的RGB全彩颜色识别传感器,传感器通过光学感应来识别物体的表面颜色。支持红、绿、蓝(RGB)三基色,支持明光感应,可以输出对应的具体数值,帮助还原颜色本真。
为了提高精度,防止周边环境干扰,在传感器底部特意添加了一块红外遮光片,最大程度减小了入射光的红外频谱成份,让颜色管理更加准确。板载自带四个高亮LED,可以让传感器在低环境光的情况下依然能够正常使用,实现“补光”的功能。模块采用I2C通信,拥有PH2.0和XH2.54(面包板)两种接口,用户可以根据自己的需求来选择接口,更加便利。
在树莓派上使用I2C颜色识别传感器
-
将树莓派开机并将正确安装树莓派扩展板
-
将数字颜色识别传感器接入扩展板对应的IIC接口
-
配置使能I2C并重启树莓派,如已配置,可跳过该步骤。按如下流程配置树莓派并重启。
-
安装I2C库和工具,树莓派需要联网。如已安装,可跳过该步骤。在终端中,依次键入如下指令,并回车:
sudo apt-get install i2c-tools
-
当连接上I2C设备后,可以通过以下命令查看I2C地址。在终端中,依次键入如下指令,并回车:
sudo i2cdetect -y -a 1
-
读取I2C设备所有寄存器数据。在终端中,依次键入如下指令,并回车:
sudo i2cdump -y 1 0x29
-y 代表取消用户交互过程,直接执行命令
1 代表I2C设备号
0x29 代表I2C设备地址
-
打开Thonny Python IDE将下面程序复制到其中
import time
bus = smbus.SMBus(1)
addr = 0x29
CDATAL = 0x94
CDATAH = 0x95
RDATAL = 0x96
RDATAH = 0x97
GDATAL = 0x98
GDATAH = 0x99
BDATAL = 0x9a
BDATAH = 0x9b
while True:
ClearL = bus.read_byte_data(addr , CDATAL)
ClearH = bus.read_byte_data(addr , CDATAH)
Clear = ClearH * 0x100 + ClearL
print("Clear = 0X%x" %Clear)
RedL = bus.read_byte_data(addr , RDATAL)
RedH = bus.read_byte_data(addr , RDATAH)
Red = RedH * 0x100 + RedL
print("Red = 0X%x" %Red)
GreenL = bus.read_byte_data(addr , GDATAL)
GreenH = bus.read_byte_data(addr , GDATAH)
Green = GreenH * 0x100 + GreenL
print("Green = 0X%x" %Green)
BlueL = bus.read_byte_data(addr , BDATAL)
BlueH = bus.read_byte_data(addr , BDATAH)
Blue = BlueH * 0x100 + BlueL
print("Blue = 0X%x" %Blue)
print(" ")
time.sleep(1)
|