0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

颜色传感器DIY图解

454398 来源:wv 2019-08-30 10:57 次阅读

第1步:BoM

Arduino

RGB LED

光敏电阻

10kΩ电阻

3x100Ω电阻器

跳线

面包板电线

步骤2:连接RGB LED

这将是我们电路的发射器部分发出不同的颜色,这些颜色将从物体反弹,通过光学定律将被检测到我们的光传感器

*将引脚2,最长引脚连接到Arduino上的GND引脚。

*连接引脚1, R GB的红色LED LED指向Arduino上的引脚5。

*将引脚3,R G B LED的贪婪色LED连接到Arduino上的引脚6。

*将引脚4,RG B LED的蓝色LED连接到Arduino上的引脚9。

您会注意到所有这些都插入标有tilda符号“〜”的PWM引脚,这样我们就可以独立控制每个LED的亮度。

步骤3:连接光电传感器

来自发射器(RGB)LED的反射光从中弹回光传感器将读取任何物体,光电传感器将使用校准值来找到特定颜色的各个RGB颜色值。

确保将光传感器移近发射器。

*将其中一个引脚(称为光纤传感器的引脚1)连接到Arduino上的GND引脚

*将光电传感器的引脚2连接到上面的3.3V引脚Arduino的。

*将光电传感器的引脚2连接到Arduino上的A0引脚。

你会注意到最后两条接线都是平行的。这是因为我们正在制作一个分压器,以便在反射光强度发生变化时获得变化的电压读数。

步骤4:代码

// Define colour sensor LED pins int ledArray[] = {5,6,9}; // boolean to know if the balance has been set

boolean balanceSet = false; //place holders for colour detected

int red = 0;

int green = 0;

int blue = 0; //floats to hold colour arrays

float colourArray[] = {0,0,0};

float whiteArray[] = {0,0,0};

float blackArray[] = {0,0,0}; //place holder for average

int avgRead; void setup(){

//setup the outputs for the colour sensor

pinMode(2,OUTPUT);

pinMode(3,OUTPUT);

pinMode(4,OUTPUT);

//begin serial communication

Serial.begin(9600); }

void loop(){ checkBalance();

checkColour();

printColour();

}

void checkBalance(){

//check if the balance has been set, if not, set it

if(balanceSet == false){

setBalance();

}

}

void setBalance(){

//set white balance

delay(5000); //delay for five seconds, this gives us time to get a white sample in front of our sensor

//scan the white sample.

//go through each light, get a reading, set the base reading for each colour red, green, and blue to the white array

for(int i = 0;i《=2;i++){

digitalWrite(ledArray[i],HIGH);

delay(100);

getReading(5); //number is the number of scans to take for average, this whole function is redundant, one reading works just as well.

whiteArray[i] = avgRead;

digitalWrite(ledArray[i],LOW);

delay(100);

}

//done scanning white, now it will pulse blue to tell you that it is time for the black (or grey) sample.

//set black balance

delay(5000); //wait for five seconds so we can position our black sample

//go ahead and scan, sets the colour values for red, green, and blue when exposed to black

for(int i = 0;i《=2;i++){

digitalWrite(ledArray[i],HIGH);

delay(100);

getReading(5);

blackArray[i] = avgRead;

//blackArray[i] = analogRead(2);

digitalWrite(ledArray[i],LOW);

delay(100);

}

//set boolean value so we know that balance is set

balanceSet = true;

delay(5000); //delay another 5 seconds to let us catch up

} void checkColour(){

for(int i = 0;i《=2;i++){

digitalWrite(ledArray[i],HIGH); //turn or the LED, red, green or blue depending which iteration

delay(100); //delay to allow CdS to stabalize, they are slow

getReading(5); //take a reading however many times

colourArray[i] = avgRead; //set the current colour in the array to the average reading

float greyDiff = whiteArray[i] - blackArray[i]; //the highest possible return minus the lowest returns the area for values in between

colourArray[i] = (colourArray[i] - blackArray[i])/(greyDiff)*255; //the reading returned minus the lowest value divided by the possible range multiplied by 255 will give us a value roughly between 0-255 representing the value for the current reflectivity(for the colour it is exposed to) of what is being scanned

digitalWrite(ledArray[i],LOW); //turn off the current LED

delay(100);

}

}

void getReading(int times){

int reading;

int tally=0;

//take the reading however many times was requested and add them up

for(int i = 0;i 《 times;i++){

reading = analogRead(0);

tally = reading + tally;

delay(10);

}

//calculate the average and set it

avgRead = (tally)/times;

}

//prints the colour in the colour array, in the next step, we will send this to processing to see how good the sensor works.

void printColour(){

Serial.print(“R = ”);

Serial.println(int(colourArray[0]));

Serial.print(“G = ”);

Serial.println(int(colourArray[1]));

Serial.print(“B = ”);

Serial.println(int(colourArray[2]));

//delay(2000);

}

步骤5:校准

首先准备一张黑白纸上传代码。

上传代码后,您会注意到在程序运行的前5秒内,RGB LED会发出各种颜色。在前5秒钟,在LED和光电传感器上放置一张黑纸。然后在接下来的5秒钟内将纸张切换到白纸上。

编写代码,使前10秒为校准周期。

第6步:测试并享受!

取出不同颜色的纸张并进行测试。它会将各个R,G,B值打印到屏幕上。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 颜色传感器
    +关注

    关注

    2

    文章

    91

    浏览量

    18163
收藏 人收藏

    评论

    相关推荐

    强色来袭!深视智能全新产品线——颜色传感器SS1系列新品上市!

    全新产品线·颜色传感器依托深视智能10年研发能力,向通用传感器之路迈进!深视智能正式推出全新产品线——颜色传感器SS系列!新一代
    的头像 发表于 11-05 08:05 233次阅读
    强色来袭!深视智能全新产品线——<b class='flag-5'>颜色</b><b class='flag-5'>传感器</b>SS1系列新品上市!

    低功耗4G模组:tcs3472颜色传感器示例

    ​今天我们学习合宙低功耗4G模组Air780EP的LuatOS开发tcs3472示例。 一、简介 tcs3472颜色传感器能够读取照射到的物体的RGB三种数值,从而识别颜色 关联文档和使用工
    的头像 发表于 10-21 07:07 167次阅读
    低功耗4G模组:tcs3472<b class='flag-5'>颜色</b><b class='flag-5'>传感器</b>示例

    光电式传感器的功能有哪些

    能够检测光的存在或变化,这是其最基本的功能。 光强度测量 :通过测量光的强度,光电传感器可以用于光照度测量。 颜色识别 :某些光电传感器能够区分不同颜色的光,用于
    的头像 发表于 09-23 09:12 421次阅读

    在RGB和XYZ颜色传感器之间进行选择,以实现自适应照明调节

    电子发烧友网站提供《在RGB和XYZ颜色传感器之间进行选择,以实现自适应照明调节.pdf》资料免费下载
    发表于 08-26 09:30 0次下载
    在RGB和XYZ<b class='flag-5'>颜色</b><b class='flag-5'>传感器</b>之间进行选择,以实现自适应照明调节

    OPT4048 高速高精度三色 XYZ 颜色传感器数据表

    电子发烧友网站提供《OPT4048 高速高精度三色 XYZ 颜色传感器数据表.pdf》资料免费下载
    发表于 08-12 10:46 0次下载
    OPT4048 高速高精度三色 XYZ <b class='flag-5'>颜色</b><b class='flag-5'>传感器</b>数据表

    OPT4060高速高灵敏度RGBW颜色传感器数据表

    电子发烧友网站提供《OPT4060高速高灵敏度RGBW颜色传感器数据表.pdf》资料免费下载
    发表于 08-09 10:23 0次下载
    OPT4060高速高灵敏度RGBW<b class='flag-5'>颜色</b><b class='flag-5'>传感器</b>数据表

    颜色识别传感器:精准捕捉世界的每一抹色彩

    颜色识别传感器作为现代工业、机器视觉、自动化控制等领域的重要设备,其技术的发展和应用对于提升生产效率、保障产品质量具有重要意义。本文将从颜色识别传感器的原理、结构组成、应用以及选型等
    的头像 发表于 07-21 16:03 601次阅读
    <b class='flag-5'>颜色</b>识别<b class='flag-5'>传感器</b>:精准捕捉世界的每一抹色彩

    传感器电路图解

    传感器,英文名称为Transducer或Sensor,是一种能够检测物理量并将其转换为可测量信号的装置。从广义上讲,传感器能够感知外界信息,如温度、压力、光、声音、磁场等,并将这些信息按照一定
    的头像 发表于 07-02 18:10 1323次阅读
    <b class='flag-5'>传感器</b>电路<b class='flag-5'>图解</b>析

    实例分享:如何使用阿童木颜色传感器检测转动轴的转向

    摘要本案例描述了如何利用颜色传感器来检测转动轴的转向。河北省客户提出了一个问题,希望能够判断他们的转向轴是正转还是反转,转速并不快。阿童木工程师提供解决方案,通过在圆柱体上贴上三种不同颜色的标记,并
    的头像 发表于 05-23 13:50 248次阅读
    实例分享:如何使用阿童木<b class='flag-5'>颜色</b><b class='flag-5'>传感器</b>检测转动轴的转向

    阿童木颜色传感器在车身颜色识别中的应用

    传感器
    阿童木(广州)智能科技有限公司
    发布于 :2024年03月12日 15:16:16

    数字RGBW-IR颜色传感器WH3620规格书

    电子发烧友网站提供《数字RGBW-IR颜色传感器WH3620规格书.pdf》资料免费下载
    发表于 03-06 15:24 0次下载

    颜色传感器实时检测转动轴转向

    摘要 本案例描述了如何利用颜色传感器来检测转动轴的转向。河北省客户提出了一个问题,希望能够判断他们的转向轴是正转还是反转,转速并不快。阿童木工程师提供解决方案,通过在圆柱体上贴上三种不同颜色的标记
    的头像 发表于 02-26 13:52 320次阅读
    <b class='flag-5'>颜色</b><b class='flag-5'>传感器</b>实时检测转动轴转向

    基于IC555构建的光反射传感器电路

    这里发布的 DIY 项目是使用 IC555 和 TCRT5000模块的光电反射传感器。这些传感器是光电传感器,这意味着它们依赖于光或光,不需要与任何其他物体接触即可感应。当反射
    的头像 发表于 02-25 16:22 758次阅读
    基于IC555构建的光反射<b class='flag-5'>传感器</b>电路

    阿童木颜色传感器应用:汽车车身颜色识别

    引言 随着科技的不断进步,汽车制造业也在不断迭代升级,全自动化生产技术成为现代汽车生产的主流。本文将深入探讨某大型汽车生产企业在其全国生产基地中,采用阿童木颜色传感器(CL2)对车身颜色进行识别
    的头像 发表于 01-26 14:45 419次阅读
    阿童木<b class='flag-5'>颜色</b><b class='flag-5'>传感器</b>应用:汽车车身<b class='flag-5'>颜色</b>识别

    阿童木颜色传感器应用汽车车漆颜色判断

    传感器应用
    阿童木(广州)智能科技有限公司
    发布于 :2024年01月26日 14:32:03