欢迎关注「凌顺实验室」微信公众号

TCS3200颜色传感器

实验效果

把色纸放在传感器2CM左右高的地方,

可以检测到该物体的RGB值,

然后我们通过画板可以检验出颜色是否正确

在实际环境中,自然光,灯光都有其色温,白色也有不同的颜色偏差。

注意测试前,第一个物体必须是白色的,因为程序先运行白平衡测试,测试后程序计算得出比例因子,之后就可以比较正确的测出其他颜色。

BOM表

Arduino Uno *1

TSC3200 颜色传感器   *1

面包板   *1

跳线若干

白色物体

红色或各色物体等

接线

Arduino Uno   <----->   TSC3200颜色传感器

Pin 6                <----->                  S0

Pin 5                <----->                  S1

Pin 4                <----->                  S2

Pin 3                <----->                  S3

Pin 2                <----->                 OUT

5V                     <----->                 VCC

GND                <----->                 GND

源码

本例程使用到TimerOne库,请更新到Arduino的函数库里

TimerOne 库下载   http://download.csdn.net/detail/ling3ye/9762875

备用下载
城通网盘免费下载(会有些广告,不喜勿点) https://u16460183.ctfile.com/fs/16460183-234375893

#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]));
}

**本示例模块没有LED控制的引脚,所以LED 可以不用接

Arduino Uno 使用TCS3200D颜色传感器 分辨颜色相关推荐

  1. Arduino UNO测试BME680环境传感器

    原文链接:https://www.yourcee.com/newsinfo/2929148.html BME680简介 BME680是一个四合一数字环境检测传感器,可以测量所处周围环境的温度.湿度.气 ...

  2. 如何用Arduino UNO和DS18B20防水传感器制作一个温度计

    使用Arduino UNO和DS18B20防水温度传感器自制温度计! 在本篇文章中,我们将使用Arduino UNO开发板和DS18B20温度传感器来制作温度计.当高精度应用需要良好的响应能力时,DS ...

  3. Arduino Uno PM2.5粉尘传感器(GP2Y1010AU0F) 看看家里的空气质量

    欢迎关注「凌顺实验室」微信公众号 这次用到的这个模块,是SHARP GP2Y10(粉尘传感器,其实我在怀疑是否也叫PM2.5) 买到手的时候,除了传感器还有随附的一个150欧姆的电阻和一个220uf的 ...

  4. 第四篇、基于Arduino uno,获取土壤湿度传感器的原始值和含水量——结果导向

    0.结果 说明:先来看看串口调试助手显示的结果,第一个值是原始的模拟电压值,第二个值是含水量,如果是你想要的,可以接着往下看. 1.外观 说明:虽然土壤湿度传感器形态各异,但是原理和代码都是适用的. ...

  5. 第三十二篇、基于Arduino uno,获取光敏电阻传感器的原始值和光照强度——结果导向

    0.结果 说明:先来看看串口调试助手显示的结果,第一个值是原始的模拟电压值,第二个值是含光量,也就是光照强度,如果是你想要的,可以接着往下看. 1.外观 说明:虽然光敏电阻传感器形态各异,但是原理和代 ...

  6. Arduino Uno 实验14——声音传感器

    声音传感器简介   声音传感器的作用相当于一个话筒(麦克风).它用来接收声波,显示声音的振动图像,但不能对噪声的强度进行测量.   该传感器内置一个对声音敏感的电容式驻极体话筒.声波使话筒内的驻极体薄 ...

  7. 【TCS3200 颜色传感器与 Arduino 实现颜色识别】

    TCS3200 颜色传感器与 Arduino 实现颜色识别 前言 TCS3200 颜色传感器引脚 颜色传感器模块如何工作? TCS3200 颜色传感器模块组成 关于颜色传感器 TCS3200 的常见问 ...

  8. Ardunio开发实例-TCS3200颜色传感器

    颜色传感器 TCS3200颜色传感器可以根据其波长检测多种颜色. 该传感器对颜色识别项目特别有用,例如颜色匹配,颜色分类,试纸条读取等等. TCS3200颜色传感器(如下图所示)使用TAOS TCS3 ...

  9. Ardunio开发实例-VEML6040颜色传感器

    VEML6040颜色传感器 VEML6040颜色传感器可感测红,绿,蓝和白光,并使用CMOS工艺将光电二极管,放大器和模拟/数字电路整合到单个芯片中. 应用颜色传感器后,可以根据环境光源调整背光的亮度 ...

最新文章

  1. 嵌入式常见笔试题总结
  2. jquery删除空图片错误图片,$('img[src=]').remove();
  3. winsock 收发广播包
  4. 正则表达式替换文本前n字符
  5. 系统监视器(Sysmon)工具的使用
  6. 搭建Nexus3(maven私服搭建)
  7. 计算机网络之广域网基础以及华为eNSP实验配置
  8. linux安装pycuda报错 517
  9. 拉新、复购、供应链,双11中小商家“三难”如何破?
  10. 绝热锥形与adc psr
  11. PS教程:5种把图片变成黑白色的方法
  12. Web项目经理手册之项目经理需要铭记在心的话
  13. 令人肝肠寸断的100个签名
  14. 正确的IE卸载与重装方法
  15. 【Linux】【操作】Linux环境运行Windows程序方式一览(全网最全)
  16. JAVA 图片地址路径转换 Base64 工具类
  17. VScode如何恢复误删文件
  18. Ghost 博客系统终极安装教程,装不上来打我!
  19. 【数据分析案例】2020年亚马逊商品评论数据分析
  20. 梯度下降、牛顿法凸优化、L1、L2正则化、softmax、Batchnorm、droupout、Targeted Dropout详解

热门文章

  1. 前端项目规范化1:什么是.editorconfig文件以及prettier转换.editorconfig文件属性
  2. his系统集成的子模块
  3. mysql服务一直处于启动状态 无法停止
  4. 目标检测tricks总结(记录)
  5. html小数转百分比函数,excel合格率公式 把小数点设置百分比就可以了
  6. PCA主成分分析 理解
  7. 当txt文件或者sql文件数据量太大,无法打开时,可以通过Emeditor这个编辑器打开
  8. 吴岩峰,杯酒快意,志在高峰
  9. 爬虫实例:链家网房源数据爬取
  10. Pixel1代平替:一加3手机刷入KaliNethunter解封完整Linux命令环境