在这个项目中,我们将使TCS3200颜色传感器与Arduino UNO接口。TCS3200是一种颜色传感器,可以通过正确的编程检测任何数量的颜色。TCS3200包含RGB(红色绿色蓝色)阵列。如微观图所示,可以在传感器上看到眼睛内部的方框。这些方框是RGB矩阵的阵列。每个盒子包含三个传感器,一个用于感测红色光强度,一个用于感测绿色光强度,最后一个用于感测蓝色光强度。
根据需要,分别选择这三个阵列中的每个传感器阵列。因此,它被称为 可编程传感器。该模块可以具有检测特定颜色并保留其他颜色的功能。它包含用于该选择目的的过滤器。存在第四种模式,即没有过滤器模式。在无滤镜模式下,传感器会检测到白光。
所需组件
硬件: ARDUINO UNO,电源(5v),LED,JHD_162ALCD(16 * 2LCD),TCS3200彩色传感器。
软体: ARDUINO IDE(每晚ARDUINO)。
电路图和工作说明
在16x2 LCD中,如果有背光,则全部有16个引脚,如果没有背光,则有14个引脚。一个人可以给背光灯供电或离开。现在,在14个引脚中,有8个数据引脚(7-14或D0-D7),2个电源引脚(1&2或VSS&VDD或GND&+ 5v),第三个用于对比度控制的引脚(VEE控制字符的粗细)如图所示)和3个控制引脚(RS&RW&E)
在电路中,您可以观察到我只接了两个控制引脚。对比度位和READ / WRITE不经常使用,因此它们可以接地。这使LCD处于最高对比度和读取模式。我们只需要控制ENABLE和RS引脚即可相应地发送字符和数据。
LCD的连接如下所示:
PIN1或VSS接地
PIN2或VDD或VCC至+ 5v电源
PIN3或VEE接地(为初学者提供最大对比度)
ARDUINO UNO的PIN4或RS(寄存器选择)至PIN8
PIN5或RW(读/写)接地(将LCD置于读模式可简化用户的通信)
ARDUINO UNO的PIN6或E(启用)至PIN9
ARDUINO UNO的PIN11或D4至PIN7
ARDUINO UNO的PIN12或D5至PIN11
ARDUINO UNO的PIN13或D6至PIN12
ARDUINO UNO的PIN14或D7至PIN13
颜色传感器的连接如下所示:
VDD至+ 5V
GND至地
OE(输出使能)到GND
S0至UNO引脚2
S1至UNO引脚3
S2至UNO引脚4
S3至UNO引脚5
OUT至UNO引脚10
颜色传感器需要检测的颜色由两个引脚S2和S3选择。通过这两个引脚的逻辑控制,我们可以告诉传感器要测量的颜色光强度。
假设我们需要检测红色的颜色强度,我们需要将两个引脚都设置为低电平。一旦完成,传感器将检测强度并将该值发送到模块内部的控制系统。
S2 |
S3 |
光电二极管类型 |
大号 |
大号 |
红 |
大号 |
H |
蓝色 |
H |
大号 |
清除(无过滤器) |
H |
H |
绿色 |
模块内部的控制系统如图所示。阵列测得的光强度发送到电流至变频器。它的作用是发出一个方波,其频率与ARRAY发送的电流有关。
因此,我们有一个发出方波的系统,该方波的频率取决于由S2和S3选择的颜色的光强度。
模块发送的信号频率可以根据用途进行调制。我们可以改变输出信号的频率带宽。
S0 |
S1 |
输出频率定标(f 0) |
大号 |
大号 |
掉电 |
大号 |
H |
2% |
H |
大号 |
20% |
H |
H |
100% |
频率缩放由两位S0和S1完成。为了方便起见,我们将频率缩放比例限制为20%。这是通过将S0设置为高电平并将S1设置为低电平来完成的。当我们在时钟较低的系统上使用模块时,此功能会派上用场。
阵列对颜色的灵敏度如下图所示。
尽管不同的颜色具有不同的灵敏度,但是对于正常使用而言,并不会有太大的区别。
这里的UNO向模块发送信号以检测颜色,并且模块所接收的数据显示在与其连接的16 * 2 LCD中。
UNO分别检测三种颜色强度并将其显示在LCD上。
Uno可以检测到信号脉冲的持续时间,从而可以获取模块发送的方波频率。通过手头的频率,我们可以将其与传感器上的颜色进行匹配。
|
通过以上条件,UNO读取UNO的第10针上的脉冲持续时间,并将其值存储在“频率”整数中。
我们将针对所有三种颜色执行此操作以进行颜色识别。在16x2 LCD上通过频率显示所有三种颜色强度。