0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

顏色傳感器DIY圖解

454398 ? 來源:wv ? 2019-08-30 10:57 ? 次閱讀

第1步:BoM

Arduino

RGB LED

光敏電阻

10kΩ電阻

3x100Ω電阻器

跳線

面包板電線

步驟2:連接RGB LED

這將是我們電路的發(fā)射器部分發(fā)出不同的顏色,這些顏色將從物體反彈,通過光學(xué)定律將被檢測到我們的光傳感器

*將引腳2,最長引腳連接到Arduino上的GND引腳。

*連接引腳1, R GB的紅色LED LED指向Arduino上的引腳5。

*將引腳3,R G B LED的貪婪色LED連接到Arduino上的引腳6。

*將引腳4,RG B LED的藍(lán)色LED連接到Arduino上的引腳9。

您會注意到所有這些都插入標(biāo)有tilda符號“?”的PWM引腳,這樣我們就可以獨(dú)立控制每個LED的亮度。

步驟3:連接光電傳感器

來自發(fā)射器(RGB)LED的反射光從中彈回光傳感器將讀取任何物體,光電傳感器將使用校準(zhǔn)值來找到特定顏色的各個RGB顏色值。

確保將光傳感器移近發(fā)射器。

*將其中一個引腳(稱為光纖傳感器的引腳1)連接到Arduino上的GND引腳

*將光電傳感器的引腳2連接到上面的3.3V引腳Arduino的。

*將光電傳感器的引腳2連接到Arduino上的A0引腳。

你會注意到最后兩條接線都是平行的。這是因?yàn)槲覀冋谥谱饕粋€分壓器,以便在反射光強(qiáng)度發(fā)生變化時獲得變化的電壓讀數(shù)。

步驟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:校準(zhǔn)

首先準(zhǔn)備一張黑白紙上傳代碼。

上傳代碼后,您會注意到在程序運(yùn)行的前5秒內(nèi),RGB LED會發(fā)出各種顏色。在前5秒鐘,在LED和光電傳感器上放置一張黑紙。然后在接下來的5秒鐘內(nèi)將紙張切換到白紙上。

編寫代碼,使前10秒為校準(zhǔn)周期。

第6步:測試并享受!

取出不同顏色的紙張并進(jìn)行測試。它會將各個R,G,B值打印到屏幕上。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 顏色傳感器
    +關(guān)注

    關(guān)注

    2

    文章

    88

    瀏覽量

    18158
收藏 人收藏

    評論

    相關(guān)推薦

    低功耗4G模組:tcs3472顏色傳感器示例

    ?今天我們學(xué)習(xí)合宙低功耗4G模組Air780EP的LuatOS開發(fā)tcs3472示例。 一、簡介 tcs3472顏色傳感器能夠讀取照射到的物體的RGB三種數(shù)值,從而識別顏色 關(guān)聯(lián)文檔和使用工
    的頭像 發(fā)表于 10-21 07:07 ?91次閱讀
    低功耗4G模組:tcs3472<b class='flag-5'>顏色</b><b class='flag-5'>傳感器</b>示例

    光電式傳感器的功能有哪些

    能夠檢測光的存在或變化,這是其最基本的功能。 光強(qiáng)度測量 :通過測量光的強(qiáng)度,光電傳感器可以用于光照度測量。 顏色識別 :某些光電傳感器能夠區(qū)分不同顏色的光,用于
    的頭像 發(fā)表于 09-23 09:12 ?274次閱讀

    在RGB和XYZ顏色傳感器之間進(jìn)行選擇,以實(shí)現(xiàn)自適應(yīng)照明調(diào)節(jié)

    電子發(fā)燒友網(wǎng)站提供《在RGB和XYZ顏色傳感器之間進(jìn)行選擇,以實(shí)現(xiàn)自適應(yīng)照明調(diào)節(jié).pdf》資料免費(fèi)下載
    發(fā)表于 08-26 09:30 ?0次下載
    在RGB和XYZ<b class='flag-5'>顏色</b><b class='flag-5'>傳感器</b>之間進(jìn)行選擇,以實(shí)現(xiàn)自適應(yīng)照明調(diào)節(jié)

    OPT4048 高速高精度三色 XYZ 顏色傳感器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《OPT4048 高速高精度三色 XYZ 顏色傳感器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 08-12 10:46 ?0次下載
    OPT4048 高速高精度三色 XYZ <b class='flag-5'>顏色</b><b class='flag-5'>傳感器</b>數(shù)據(jù)表

    OPT4060高速高靈敏度RGBW顏色傳感器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《OPT4060高速高靈敏度RGBW顏色傳感器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 08-09 10:23 ?0次下載
    OPT4060高速高靈敏度RGBW<b class='flag-5'>顏色</b><b class='flag-5'>傳感器</b>數(shù)據(jù)表

    顏色識別傳感器:精準(zhǔn)捕捉世界的每一抹色彩

    ?顏色識別傳感器作為現(xiàn)代工業(yè)、機(jī)器視覺、自動化控制等領(lǐng)域的重要設(shè)備,其技術(shù)的發(fā)展和應(yīng)用對于提升生產(chǎn)效率、保障產(chǎn)品質(zhì)量具有重要意義。本文將從顏色識別傳感器的原理、結(jié)構(gòu)組成、應(yīng)用以及選型等
    的頭像 發(fā)表于 07-21 16:03 ?544次閱讀
    <b class='flag-5'>顏色</b>識別<b class='flag-5'>傳感器</b>:精準(zhǔn)捕捉世界的每一抹色彩

    傳感器電路圖解

    傳感器,英文名稱為Transducer或Sensor,是一種能夠檢測物理量并將其轉(zhuǎn)換為可測量信號的裝置。從廣義上講,傳感器能夠感知外界信息,如溫度、壓力、光、聲音、磁場等,并將這些信息按照一定
    的頭像 發(fā)表于 07-02 18:10 ?1163次閱讀
    <b class='flag-5'>傳感器</b>電路<b class='flag-5'>圖解</b>析

    實(shí)例分享:如何使用阿童木顏色傳感器檢測轉(zhuǎn)動軸的轉(zhuǎn)向

    摘要本案例描述了如何利用顏色傳感器來檢測轉(zhuǎn)動軸的轉(zhuǎn)向。河北省客戶提出了一個問題,希望能夠判斷他們的轉(zhuǎn)向軸是正轉(zhuǎn)還是反轉(zhuǎn),轉(zhuǎn)速并不快。阿童木工程師提供解決方案,通過在圓柱體上貼上三種不同顏色的標(biāo)記,并
    的頭像 發(fā)表于 05-23 13:50 ?227次閱讀
    實(shí)例分享:如何使用阿童木<b class='flag-5'>顏色</b><b class='flag-5'>傳感器</b>檢測轉(zhuǎn)動軸的轉(zhuǎn)向

    阿童木顏色傳感器在車身顏色識別中的應(yīng)用

    傳感器
    阿童木(廣州)智能科技有限公司
    發(fā)布于 :2024年03月12日 15:16:16

    數(shù)字RGBW-IR顏色傳感器WH3620規(guī)格書

    電子發(fā)燒友網(wǎng)站提供《數(shù)字RGBW-IR顏色傳感器WH3620規(guī)格書.pdf》資料免費(fèi)下載
    發(fā)表于 03-06 15:24 ?0次下載

    顏色傳感器實(shí)時檢測轉(zhuǎn)動軸轉(zhuǎn)向

    摘要 本案例描述了如何利用顏色傳感器來檢測轉(zhuǎn)動軸的轉(zhuǎn)向。河北省客戶提出了一個問題,希望能夠判斷他們的轉(zhuǎn)向軸是正轉(zhuǎn)還是反轉(zhuǎn),轉(zhuǎn)速并不快。阿童木工程師提供解決方案,通過在圓柱體上貼上三種不同顏色的標(biāo)記
    的頭像 發(fā)表于 02-26 13:52 ?297次閱讀
    <b class='flag-5'>顏色</b><b class='flag-5'>傳感器</b>實(shí)時檢測轉(zhuǎn)動軸轉(zhuǎn)向

    基于IC555構(gòu)建的光反射傳感器電路

    這里發(fā)布的 DIY 項目是使用 IC555 和 TCRT5000模塊的光電反射傳感器。這些傳感器是光電傳感器,這意味著它們依賴于光或光,不需要與任何其他物體接觸即可感應(yīng)。當(dāng)反射
    的頭像 發(fā)表于 02-25 16:22 ?733次閱讀
    基于IC555構(gòu)建的光反射<b class='flag-5'>傳感器</b>電路

    阿童木顏色傳感器應(yīng)用:汽車車身顏色識別

    引言 隨著科技的不斷進(jìn)步,汽車制造業(yè)也在不斷迭代升級,全自動化生產(chǎn)技術(shù)成為現(xiàn)代汽車生產(chǎn)的主流。本文將深入探討某大型汽車生產(chǎn)企業(yè)在其全國生產(chǎn)基地中,采用阿童木顏色傳感器(CL2)對車身顏色進(jìn)行識別
    的頭像 發(fā)表于 01-26 14:45 ?403次閱讀
    阿童木<b class='flag-5'>顏色</b><b class='flag-5'>傳感器</b>應(yīng)用:汽車車身<b class='flag-5'>顏色</b>識別

    阿童木顏色傳感器應(yīng)用汽車車漆顏色判斷

    傳感器應(yīng)用
    阿童木(廣州)智能科技有限公司
    發(fā)布于 :2024年01月26日 14:32:03

    阿童木顏色傳感器:識別面條包裝扎帶是否缺失# 顏色傳感器 # 面條生產(chǎn)

    傳感器
    阿童木(廣州)智能科技有限公司
    發(fā)布于 :2023年11月07日 13:52:02