(完整版)TCS3200颜色传感器使用说明资料
- 格式:doc
- 大小:310.01 KB
- 文档页数:10
颜色识别模块TCS230 颜色传感器块TCS3200TCS3200D 颜色模块颜色传感器供电电源3~5V,抗光干扰,白色LED,可控制亮灭,可检测不发光物体颜色使用TCS3200 实际上就是检测频率例如只要把TC1的时钟设为外部时钟时钟引脚连接TCS3200的OUT脚用不同的预分频对应检测RGB三个分量定时读取TCNT1就可得到频率通过频率就能计算到颜色用ATMEGA16几个I/O引脚去控制S0-S3去切换不同的频率档TCS3200已经可以成功地捕获输出频率。
但现在存在的问题是,这个传感器对光线似乎非常敏感,因此杂光干扰比较严重,其内置的滤色二极管几乎起不到分辨颜色的作用,通过示波器能看到OUT输出频率变化比较大。
由于我需要分辨的东西自身不能发光(贴纸),因此识别它的颜色变得更加困难。
除非你把探头做成探头形状或在漆黑的环境否则你无法避免其它光线的干扰另外在算法上也要有滤除强光的作用把颜色光线提取出来由于TCS3200本身并没有对光线进行动态适应的因此在算法上就显得更需复杂STC89C52单片机STC89C52单片机简介STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。
在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口。
另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
• 139•设计了一种基于TCS3200颜色传感器和wtn6040语音芯片的颜色检测及语音提示系统。
并依次利用白平衡、颜色的RGB值获取、RGB到HSV颜色空间转换,对传感器输出信号进行处理,最终得到代表颜色的色调H、饱和度S、亮度V三个值,从而准确判断出物体的颜色并进行语音播报提示。
最后探讨了该颜色检测系统在工农业生产、特殊人群生活辅助等方面的应用。
引言:现实中的颜色多种多样,构成了丰富多彩的视觉世界。
但人的肉眼能识别的颜色种类很有限,还有色盲、盲人等特殊人群对颜色没有分辨和感知能力。
在生产、生活中也经常需要对各种颜色进行准确检测,以控制生产过程或者方便某些生活需求。
但现实世界中颜色的种类繁多,并且受光照、亮度等环境因素的影响,对颜色的识别就更难做到精确准确。
考虑到这种现实情况,本文利用最新的专业颜色检测芯片,设计开发了一种自动颜色检测系统,并利用语音合成芯片对检测的颜色进行直观的语音播报提示,同时可以和上位机通讯,在上位机上进行颜色实时显示,并集中控制一些与颜色有关的过程参数。
1 系统方案设计本系统采用TCS3200专业颜色传感器模块作为颜色感测器件,利用单片机AT89C4051进行控制及数据采集,通过运算转换成颜色的标准RGB值,再通过RGB到HSV颜色空间的转换,得到符合人眼实际视觉习惯的色度H、饱和度S、亮度V值,从而准确判断出实际的颜色种类。
同时通过合成语音芯片WTN6040,同步播放出对应的颜色语音提示,并可以通过RS 232串行通信接口上传到上位机控制系统进行显示和相关控制。
图1是总体方案设计框图。
1.1 TCS3200芯片简介TCS3200是一款可编程光到频率的转换器芯片。
它把硅光电二极管、电流频率转换器以及红绿蓝(RGB)滤光器集成在一个单一CMOS电路上。
TCS3200的输出信号是数字频率脉冲,可直接与微处理器或其他逻辑电路相连接,使电路变得简单。
TCS3200芯片采用8引脚的SOIC表面贴装式封装,见图2所示。
【产品展示图片】引脚说明1、S02、S13、OE4、GND5、VCC6、OUT7、S28、S3简要说明一、尺寸:长34mmX宽26mmX高10mm二、主要芯片:TCS230三、工作电压:直流5V四、输出频率电压0~5V五、特点:1、所有的引脚全部引出2、输出占空比50%3、采用高亮白色LED灯反射光4、可直接和单片机连接5、静态检测被测物颜色6、检测距离10mm最佳操作说明请参看我们的优酷视频:/龙戈电子适用场合:单片机学习、电子竞赛、产品开发、毕业设计等等附录:颜色传感器TCS230及颜色识别电路随着现代工业生产向高速化、自动化方向的发展,生产过程中长期以来由人眼起主导作用的颜色识别工作将越来越多地被相应的颜色传感器所替代。
例如:图书馆使用颜色区分对文献进行分类,能够极大地提高排架管理和统计等工作;在包装行业,产生包装利用不同的颜色和装潢来表示其不同的性质或用途。
目前的颜色传感器通常是在独立的光电二极管上覆盖经过修正的红、绿、蓝滤波片,然后对输出信号进行相应的处理,才能将颜色信号识别出来;有的将两者集合起来,但是输出模拟信号,需要一个A/D电路进行采集,对该信号进一步处理,才能进行识别,增加了电路的复杂性,并且存在较大的识别误差,影响了识别的效果。
TAOS(Texas Advanced Optoelectronic Solutions)公司最新推出的颜色传感器TCS230,不仅能够实现颜色的识别与检测,与以前的颜色传感器相比,还具有许多优良的新特性。
1 .TCS230芯片的结构框图与特点:TCS230是TAOS公司推出的可编程彩色光到频率的转换器,它把可配置的硅光电二极管与电流频率转换器集成在一个单一的CMOS电路上,同时在单一芯片上集成了红绿蓝(RGB)三种滤光器,是业界第一个有数字兼容接口的RGB彩色传感器,TCS230的输出信号是数字量,可以驱动标准的TTL或CMOS逻辑输入,因此可直接与微处理器或其他逻辑电路相连接,由于输出的是数字量,并且能够实现每个彩色信道10位以上的转换精度,因而不再需要A/D转换电路,使电路变得更简单,图1是TCS230的引脚和功能框图。
色标传感器使用说明书产品部件说明:输出电路:NPN 型号PNP 型号安装方法:* 安装在DIN 轨道上1、将主机底部的卡槽与轨道对齐。
按箭头 1 的方向推动主机的同时使其往箭头 2 的方向倾斜。
2、拆卸传感器的方法是,在朝箭头 1 的方向推动主机的同时,朝箭头 3 的方向提升主机。
* 安装到墙壁上(仅适用于主模块)将模块放到选配的安装架上,将其安装到一起,并使用两个 M3 螺钉固定住,连接光纤模块1, 按箭头 1 所示的方向开启防尘盖。
2, 按箭头 2 所示的方向往下移光纤锁杆。
3, 将光纤模块记号上标记的长度插入光纤孔。
4, 按箭头 4 所示的方向往下移光纤锁杆。
5, 如果使用较薄的光纤模块,则需要使用随其提供的转接器。
6, 如果没有连接正确的转接器,则薄型光纤模块将不能正确地检测目标物。
(转接器随光纤模块提供。
)7, 若将同轴反光型光纤模块连接到放大器上,应将单芯光纤连接到发射器侧而将多芯光纤连接到接收器侧。
设置灵敏度* MARK 模式下两点校准:1,在光纤头前方没有放置任何工件时,按 SET(设置)按钮(按键时间不超过 2 秒).2,将一个工件放置在光纤前方,按 SET(设置)按钮(按键时间不超过 2 秒).两个步骤测出的数值以及 RGB 检测通道会显示在屏幕上并自动记忆储存.* C 或 CI 模式下的校准自学习:把光纤对准需要检测的颜色,按下一次 SET 就可以了,传感器会自动记录当前的颜色匹配值及光亮值,作为正常工作时的判断标准.MATK 是普通的色标检测模式,放大器会选择 RGB 通道中的一个作为判断通道。
C 模式时通用的颜色匹配检测模式,千分之一千表示颜色完全相同,一般认为千分之 900 就是一种颜色。
CI 是颜色+光亮值模式,用来精确检测物体的颜色以及物体的光亮值。
千分之 1000 表示完全相同。
C 模式下物体在光纤前面晃动也可以正常检测,CI 模式下,物体在光纤前面有任何晃动都会造成信号值急剧减小,从而传感器认为 CI 不匹配。
TCS3200 颜色传感器是一款全彩的颜色检测器,包括了一块 TAOS TCS3200RGB 感应芯片和 4 个白光 LED 灯, TCS3200 能在一定的范围内检测和测量几乎所有的可见光。
它适合于色度计测量应用领域。
比如彩色打印、医疗诊断、计算机彩色监视器校准以及油漆、纺织品、化妆品和印刷材料的过程控制。
通常所看到的物体颜色,实际上是物体表面吸收了照射到它上面的白光 (日光 ) 中的一部分有色成分,而反射出的另一部分有色光在人眼中的反应。
白色是由各种频率的可见光混合在一起构成的,也就是说白光中包含着各种颜色的色光 (如红R、黄Y、绿 G、青 V、蓝 B、紫 P)。
根据德国物理学家赫姆霍兹 (Helinholtz) 的三原色理论可知,各种颜色是由不同比例的三原色 (红、绿、蓝 )混合而成的。
由上面的三原色感应原理可知,如果知道构成各种颜色的三原色的值,就能够知道所测试物体的颜色。
对于 TCS3200D 来说,当选定一个颜色滤波器时,它只允许某种特定的原色通过,阻止其它原色的通过。
例如:当选择红色滤波器时,入射光中只有红色可以通过,蓝色和绿色都被阻止,这样就可以得到红色光的光强;同理,选择其它的滤波器,就可以得到蓝色光和绿色光的光强。
通过这三个光强值,就可以分析出反射到 TCS3200D 传感器上的光的颜色。
TCS3200D 传感器有红绿蓝和清除 4 种滤光器,可以通过其引脚 S2 和 S3 的高低电平来选择滤波器模式,如下图。
TCS3200D 有可编程的彩色光到电信号频率的转换器,当被测物体反射光的红、绿、蓝三色光线分别透过相应滤波器到达 TAOS TCS3200RGB感应芯片时,其内置的振荡器会输出方波,方波频率与所感应的光强成比例关系,光线越强,内置的振荡器方波频率越高。
TCS3200 传感器有一个 OUT 引脚,它输出信号的频率与内置振荡器的频率也成比例关系,它们的比率因子可以靠其引脚 S0 和 S1 的高低电平来选择,如下图。
TCS3200颜色传感器使用说明资料TCS3200颜色传感器是一种能够识别颜色的传感器模块,它可以测量可见光谱中的红、绿、蓝三个基本颜色,并通过输出电压来表示颜色的强度。
下面将详细介绍TCS3200颜色传感器的使用方式和注意事项。
使用步骤:1.连接传感器:将传感器的引脚与控制器板上的相应引脚连接。
TCS3200传感器有VCC、GND、S0、S1、S2、S3、OUT等引脚,其中VCC和GND分别连接到控制器板上的3.3V和GND引脚,OUT引脚连接到控制器板的一个数字输入引脚上,S0、S1、S2、S3引脚连接到控制器板的数字输出引脚上,用于选择传感器的工作模式。
2.设置工作模式:根据需要选择传感器的工作模式。
TCS3200传感器支持三种主要的工作模式:输出频率测量模式、输出频率比较模式和输出电平测量模式。
通过设置S2和S3引脚的电平可以选择不同的模式,具体设置方式请参考传感器的数据手册。
3.获取颜色数据:通过读取OUT引脚的电平变化来获取颜色数据。
传感器会根据检测到的红、绿、蓝三种颜色的光强度来改变输出的电平,通过读取OUT引脚的高低电平即可获取颜色数据。
可以使用数字输入引脚的中断功能来实现对电平变化的实时检测。
注意事项:1.传感器的输入电压范围为2.7V-5.5V,接入电压时需要注意不要超过这个范围,否则可能会损坏传感器。
2.在选择工作模式时需要注意传感器引脚的设置。
不同的工作模式需要将S2和S3引脚设置为不同的电平,否则传感器无法正常工作。
3.在读取颜色数据时,需通过合适的电平转换电路将OUT引脚的输出电平转换为微控制器可接受的逻辑电平,以免损坏微控制器。
4.为了减少周围环境光的干扰,可以在传感器上方加装合适的遮光罩,只允许待测物体的光线照射到传感器上。
5.在使用传感器时,要注意不要接触传感器的光敏元件,以免污染或损坏。
总结:TCS3200颜色传感器可以通过测量红、绿、蓝三个基本颜色的光强度来识别颜色,它的使用非常简单。
利用颜色传感器TCS3200识别红绿灯作者:曹琼来源:《电脑知识与技术》2017年第07期摘要;随着科学技术的发展,颜色检测从人工检测发展到采用各种颜色仪器检测,其中检测仪器常采用颜色传感器。
TCS3200是最新的一种颜色传感器,它测量速度快、数字化、易编程控制和干抗扰等诸多优点被广泛应用。
关键词:颜色传感器;三基色;TCS3200中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2017)07-0181-02三基色RGB色彩模式常被作为颜色标准,即通过对三个颜色通道之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色。
因此,检测出了颜色信号中的红、绿、蓝比例值就是检测出了颜色。
颜色检测识别在工业生产中的应用越来越深入,但是以往的颜色检测主要是依靠人工进行,这种方法受照明条件、背景亮度、测色人员主观上和心理上的差异等各种因素影响,缺乏准确性,所以随着科学技术的发展,各种检测颜色仪器纷纷出现。
常用的颜色检测仪器有两种方法:第一种是基于机器视觉的颜色检测是从视图中获得颜色数据的,麻烦的是必须对图像进行各种预处理,因此此种颜色检测较为复杂且价高;第二种是基于颜色传感器的颜色检测,此种方法较为常用,现在常用颜色传感器有RGB颜色传感器和色标传感器两种基本类型。
目前常用的颜色传感器通常是把经过修正的红绿蓝滤光片覆盖在独立的光电二极管上,需要对输出信号进行相应的处理才能将颜色信号识别出来。
TAOS公司推出了此类的颜色传感器,其中现在最新的就是TCS3200,与以前进行比较有许多优点:反应速度快,检测的不同颜色时可通过编程设置改变,使用方便,数字量输出,能采集、放大信号,内部有A/D,可直接连接单片机。
1系统硬件设计系统由颜色传感器模块、单片机、蜂鸣器组成,基本原理如图1所示。
1.1颜色传感器模块电路TCS3200有8引脚,采用SOIC表面贴装式封装,在一个芯片上集成光电二极管有64个,共分为四种不同颜色,64个全部交叉排列在芯片上,其中相同颜色的是均匀分布且并联连接。
色标传感器说明书
色标传感器说明书
一、产品概述
色标传感器是一种光电转换设备,在光照条件下可以实现对物体颜色的识别。
本产品采用数字化设计和集成化制造,具有高精度、高稳定性、高速度等特点。
二、产品特点
1. 采用高精度的光电传感器,可实现对颜色的精准识别。
2. 内置高速数字信号处理器,支持多种数据传输方式。
3. 具有自动校正和自适应能力,能够适应复杂的环境。
4. 运行稳定,可靠性高,可长时间连续工作。
三、使用方法
1. 在使用前,需将传感器与控制器进行连接。
2. 将传感器放置在需要检测的物品或颜色上,并保持一定的距离。
3. 打开控制器的电源,并设置好识别参数。
4. 开始使用,可以实现对物品颜色的精准识别和输出信号的控制。
四、注意事项
1. 传感器不可受到强烈的光照和振动。
2. 不要在高温、潮湿、腐蚀性气体等环境下使用。
3. 使用前请阅读说明书,遵循正确的使用方法和操作规范。
4. 开机前,请检查电源电压是否符合要求。
五、技术参数
1. 识别精度:±0.5%;
2. 工作距离:30mm~150mm;
3. 输出信号:数字信号;
4. 数据传输方式:RS485;
5. 工作电压:DC12V;
6. 工作温度:-20℃~60℃;
7. 工作湿度:10%~90%RH。
备注:本产品与网络、电话无关,如需更多详情,请参考生产厂家提供的其他资料。
TCS3200颜色传感器是一款全彩的颜色检测器,包括了一块TAOS TCS3200RGB 感应芯片和4个白光LED灯,TCS3200能在一定的范围内检测和测量几乎所有的可见光。
它适合于色度计测量应用领域。
比如彩色打印、医疗诊断、计算机彩色监视器校准以及油漆、纺织品、化妆品和印刷材料的过程控制。
通常所看到的物体颜色,实际上是物体表面吸收了照射到它上面的白光(日光)中的一部分有色成分,而反射出的另一部分有色光在人眼中的反应。
白色是由各种频率的可见光混合在一起构成的,也就是说白光中包含着各种颜色的色光(如红R、黄Y、绿G、青V、蓝B、紫P)。
根据德国物理学家赫姆霍兹(Helinholtz)的三原色理论可知,各种颜色是由不同比例的三原色(红、绿、蓝)混合而成的。
由上面的三原色感应原理可知,如果知道构成各种颜色的三原色的值,就能够知道所测试物体的颜色。
对于TCS3200D 来说,当选定一个颜色滤波器时,它只允许某种特定的原色通过,阻止其它原色的通过。
例如:当选择红色滤波器时,入射光中只有红色可以通过,蓝色和绿色都被阻止,这样就可以得到红色光的光强;同理,选择其它的滤波器,就可以得到蓝色光和绿色光的光强。
通过这三个光强值,就可以分析出反射到TCS3200D传感器上的光的颜色。
TCS3200D传感器有红绿蓝和清除4种滤光器,可以通过其引脚S2和S3的高低电平来选择滤波器模式,如下图。
TCS3200D有可编程的彩色光到电信号频率的转换器,当被测物体反射光的红、绿、蓝三色光线分别透过相应滤波器到达TAOS TCS3200RGB感应芯片时,其内置的振荡器会输出方波,方波频率与所感应的光强成比例关系,光线越强,内置的振荡器方波频率越高。
TCS3200传感器有一个OUT引脚,它输出信号的频率与内置振荡器的频率也成比例关系,它们的比率因子可以靠其引脚S0和S1的高低电平来选择,如下图。
这个测试实验,我把TCS3200传感器OUT引脚输出信号频率与其内置振荡器频率比率因子设为2%,有了输出频率比例因子,但是如何通过OUT引脚输出信号频率来换算出被测物体由三原色光强组成的RGB颜色值呢?这还需进行白平衡校正来得到RGB比例因子才行!白平衡校正方法是:把一个白色物体放置在TCS3200颜色传感器之下,两者相距10mm左右,点亮传感器上的4个白光LED灯,用Arduino控制器的定时器设置一固定时间1s,然后选通三原色的滤波器,让被测物体反射光中红、绿、蓝三色光分别通过滤波器,计算1s时间内三色光对应的TCS3200传感器OUT输出信号脉冲数(单位时间的脉冲数包含了输出信号的频率信息),再通过正比算式得到白色物体RGB值255与三色光脉冲数的比例因子。
有了白平衡校正得到的RGB比例因子,则其它颜色物体反射光中红、绿、蓝三色光对应的TCS3200输出信号1s 内脉冲数乘以R、G、B比例因子,就可换算出了被测物体的RGB标准值了。
现在谈谈,如何进行TCS3200各控制引脚与Arduino控制器的硬件连线问题,下图分别是TCS3200传感器和其连线图。
上图中TCS3200传感器各控制引脚与Arduino控制器数字端口连线的对应关系,我设置为:#define S0 6#define S1 5#define S2 4#define S3 3#define OUT 2#define LED 7当被测物体为不发光物体时,应该把TCS3200的LED引脚设置为高电平,以点亮TCS3200传感器电路板上的四个白光LED灯。
下文展示了一个带有白平衡的测试程序,把这个程序下载到Arduino控制器中,同时把一个白色物体放置在TCS3200颜色传感器之下,点亮传感器上的4个白光LED灯,再打开Arduino IDE的串口监视器,会出现下图监视画面,可以在该画面中找到白色物体RGB值255以及RGB比例因子。
(可通过QQ截图来锁定画面,以便观察。
)(双击图片,可以放大看!)把白平衡时放置在TCS3200颜色传感器之下白色物体拿走,放上另一个黄色物体,在Arduino IDE串口监视器看到的这个黄色物体RGB值为233、157、56,如下图所示。
打开电脑Windows操作系统自带的画图板,点击菜单栏“颜色”--->“编辑颜色”--->“规定自定义颜色”-->右下角输入RGB值,查看对应的颜色与实际测试的颜色是否相符。
实际测试结果是测得的物体颜色与实际颜色有些偏色,但并不影响区分出被测物体是哪种颜色的物体。
介绍完TCS3200传感器颜色识别原理和其与Arduino控制器的硬件连线,以及如何利用串口监视器找到白平衡后的比例因子和被测物体的RGB值。
下面展示的是Arduino测试程序。
注意:下面的#include 《TimerOne.h> 要改为单括号形式。
Arduino程序:#include 《TimerOne.h> //申明库文件//把TCS3200颜色传感器各控制引脚连到Arduino数字端口#define S0 6 //物体表面的反射光越强,TCS3002D内置振荡器产生的方波频率越高,#define S1 5 //S0和S1的组合决定输出信号频率比例因子,比例因子为2%//比率因子为TCS3200传感器OUT引脚输出信号频率与其内置振荡器频率之比#define S2 4 //S2和S3的组合决定让红、绿、蓝,哪种光线通过滤波器#define S3 3#define OUT 2 //TCS3200颜色传感器输出信号连接到Arduino中断0引脚,并引发脉冲信号中断//在中断函数中记录TCS3200输出信号的脉冲个数#define LED 7 //控制TCS3200颜色传感器是否点亮LED灯float g_SF[3]; //从TCS3200输出信号的脉冲数转换为RGB标准值的RGB比例因子int g_count = 0; // 计算与反射光强相对应TCS3200颜色传感器输出信号的脉冲数// 数组用于存储在1s内TCS3200输出信号的脉冲数,它乘以RGB比例因子就是RGB标准值int g_array[3];int g_flag = 0; // 滤波器模式选择顺序标志// 初始化TSC3200各控制引脚的输入输出模式//设置TCS3002D的内置振荡器方波频率与其输出信号频率的比例因子为2%void TSC_Init(){pinMode(S0, OUTPUT);pinMode(S1, OUTPUT);pinMode(S2, OUTPUT);pinMode(S3, OUTPUT);pinMode(OUT, INPUT);pinMode(LED, OUTPUT);digitalWrite(S0, LOW);digitalWrite(S1, HIGH);}//选择滤波器模式,决定让红、绿、蓝,哪种光线通过滤波器void TSC_FilterColor(int Level01, int Level02){if(Level01 != 0)Level01 = HIGH;if(Level02 != 0)Level02 = HIGH;digitalWrite(S2, Level01);digitalWrite(S3, Level02);}//中断函数,计算TCS3200输出信号的脉冲数void TSC_Count(){g_count ++ ;}//定时器中断函数,每1s中断后,把该时间内的红、绿、蓝三种光线通过滤波器时,//TCS3200输出信号脉冲个数分别存储到数组g_array[3]的相应元素变量中void TSC_Callback(){switch(g_flag){case 0:Serial.println("->WB Start");TSC_WB(LOW, LOW); //选择让红色光线通过滤波器的模式break;case 1:Serial.print("->Frequency R=");Serial.println(g_count); //打印1s内的红光通过滤波器时,TCS3200输出的脉冲个数g_array[0] = g_count; //存储1s内的红光通过滤波器时,TCS3200输出的脉冲个数TSC_WB(HIGH, HIGH); //选择让绿色光线通过滤波器的模式break;case 2:Serial.print("->Frequency G=");Serial.println(g_count); //打印1s内的绿光通过滤波器时,TCS3200输出的脉冲个数g_array[1] = g_count; //存储1s内的绿光通过滤波器时,TCS3200输出的脉冲个数TSC_WB(LOW, HIGH); //选择让蓝色光线通过滤波器的模式break;case 3:Serial.print("->Frequency B=");Serial.println(g_count); //打印1s内的蓝光通过滤波器时,TCS3200输出的脉冲个数Serial.println("->WB End");g_array[2] = g_count; //存储1s内的蓝光通过滤波器时,TCS3200输出的脉冲个数TSC_WB(HIGH, LOW); //选择无滤波器的模式break;default:g_count = 0; //计数值清零break;}}//设置反射光中红、绿、蓝三色光分别通过滤波器时如何处理数据的标志//该函数被TSC_Callback( )调用void TSC_WB(int Level0, int Level1){g_count = 0; //计数值清零g_flag ++; //输出信号计数标志TSC_FilterColor(Level0, Level1); //滤波器模式Timer1.setPeriod(1000000); //设置输出信号脉冲计数时长1s}//初始化void setup(){TSC_Init();Serial.begin(9600); //启动串行通信Timer1.initialize(); // defaulte is 1sTimer1.attachInterrupt(TSC_Callback); //设置定时器1的中断,中断调用函数为TSC_Callback()//设置TCS3200输出信号的上跳沿触发中断,中断调用函数为TSC_Count()attachInterrupt(0, TSC_Count, RISING);digitalWrite(LED, HIGH);//点亮LED灯delay(4000); //延时4s,以等待被测物体红、绿、蓝三色在1s内的TCS3200输出信号脉冲计数//通过白平衡测试,计算得到白色物体RGB值255与1s内三色光脉冲数的RGB比例因子g_SF[0] = 255.0/ g_array[0]; //红色光比例因子g_SF[1] = 255.0/ g_array[1] ; //绿色光比例因子g_SF[2] = 255.0/ g_array[2] ; //蓝色光比例因子//打印白平衡后的红、绿、蓝三色的RGB比例因子Serial.println(g_SF[0],5);Serial.println(g_SF[1],5);Serial.println(g_SF[2],5);//红、绿、蓝三色光分别对应的1s内TCS3200输出脉冲数乘以相应的比例因子就是RGB 标准值//打印被测物体的RGB值for(int i=0; i<3; i++)Serial.println(int(g_array[i] * g_SF[i]));}//主程序void loop(){g_flag = 0;//每获得一次被测物体RGB颜色值需时4sdelay(4000);//打印出被测物体RGB颜色值for(int i=0; i<3; i++)Serial.println(int(g_array[i] * g_SF[i]));}程序中的头文件TimerOne.h文件请下载:/QnKIsvphPb4Mv 上面是带有白平衡的测试程序,对于具体项目的应用程序,要在此基础上加以变动。