聚豐項(xiàng)目 > 基于恩智浦顏色檢測套件織布廠布料自動(dòng)分類系統(tǒng)
經(jīng)過這段時(shí)間的試用,我已經(jīng)對開發(fā)板有充分的了解,已經(jīng)可以用于實(shí)際項(xiàng)目 并提交試用報(bào)告了。屏幕顯示VEML6040模塊檢測的紅,綠,藍(lán)光檢測數(shù)據(jù),通過色光強(qiáng)度數(shù)據(jù)分析物體的顏色,具體原理是,當(dāng)使用白光照射物體時(shí),物體反射的光顏色的RGB數(shù)值一與該物體的顏色大致相近,根據(jù)牛頓光譜規(guī)律分析,使用白色強(qiáng)光照射物體反射光波長越短,所得RGB數(shù)值與物體顏色越接近。這個(gè)VEML6040的光譜檢測精度已經(jīng)可以滿足織布廠布料自動(dòng)分類系統(tǒng)所要求的精度了。
donatello1996



donatello1996
團(tuán)隊(duì)成員
donatello1996 學(xué)生
VEML6040環(huán)境顏色套件
MDK Keil 5.18
LPC800.pack
MBED驅(qū)動(dòng)
main()函數(shù)代碼如下:
int main()
{
uint8_t LSB,MSB,i,times=30;
uint16_t txSize=2,rxSize=0,
last_Data,red_data,green_data,
blue_data;
uint32_t sum_data,avr_data;
SystemCoreClockUpdate();
SystemInit();
SysTick_Config(SystemCoreClock/TICKRATE_HZ);
Chip_GPIO_Init(LPC_GPIO_PORT);
VEML6040_Init();
Board_UART_Init();
LCD12864_Init();
LED_Init();
//PUTImage(LOGO);
LCD12864_Clear();
txData[0]=0x00,txData[1]=0x10;
SetupXferRecAndExecute(I2C_ADDR_7BIT,
txData,txSize,rxData,rxSize);
last_Data=0;
txSize=1,rxSize=2;
/*
LCD12864_char16x16(0,0,0);
LCD12864_char16x16(2,0,1);
LCD12864_char16x16(4,0,2);
LCD12864_char16x16(6,0,3);
LCD12864_char16x16(8,0,4);
LCD12864_char16x16(10,0,5);
LCD12864_char16x16(12,0,6);
LCD12864_char8x16(2,0,"Donatello1996");*/
LCD12864_char16x16(0,0,7);
LCD12864_char16x16(2,0,11);
LCD12864_char16x16(10,0,8);
LCD12864_char16x16(12,0,11);
LCD12864_char16x16(0,4,9);
LCD12864_char16x16(2,4,11);
LCD12864_char16x16(10,4,10);
LCD12864_char16x16(12,4,11);
while(1)
{
sum_data=0;
txData[0]=0x08;
for(i=0;i<times;i++)
{//?ì2aoì1a
SetupXferRecAndExecute(I2C_ADDR_7BIT, txData,txSize, rxData, rxSize);
delay(100);
LSB=rxData[0];
MSB=rxData[1];
last_Data=((MSB<<8)+LSB);
sum_data+=last_Data;
}
avr_data=sum_data/times;
red_data=avr_data;
LCD12864_char8x16(0,2," ");
LCD12864_num(0,2,avr_data);
txData[0]=0x09;
sum_data=0;
for (i=0;i<times;i++)
{
SetupXferRecAndExecute(I2C_ADDR_7BIT, txData,txSize, rxData, rxSize);
delay(100);
LSB = rxData[0];
MSB = rxData[1];
last_Data=((MSB<<8)+LSB);
sum_data+=last_Data;
}
avr_data=sum_data/times;
green_data=avr_data;
LCD12864_char8x16(10,2," ");
LCD12864_num(10,2,avr_data);
txData[0]=0x0A;
sum_data=0;
for (i=0;i<times;i++)
{
SetupXferRecAndExecute(I2C_ADDR_7BIT, txData,txSize, rxData, rxSize);
delay(100);
LSB = rxData[0];
MSB = rxData[1];
last_Data=((MSB<<8)+LSB);
sum_data+=last_Data;
}
avr_data=sum_data/times;
blue_data=avr_data;
LCD12864_char8x16(0,6," ");
LCD12864_num(0,6,avr_data);
txData[0]=0x0B;
sum_data=0;
for (i=0;i<times;i++)
{
SetupXferRecAndExecute(I2C_ADDR_7BIT, txData,txSize, rxData, rxSize);
delay(100);
LSB=rxData[0];
MSB=rxData[1];
last_Data=((MSB<<8)+LSB);
sum_data+=last_Data;
}
avr_data = sum_data/times;
LCD12864_char8x16(10,6," ");
LCD12864_num(10,6,avr_data);
delay_Long2(1000);
if(red_data>green_data&&red_data>blue_data)
LCD12864_char16x16(6,2,7),LCD12864_char16x16(6,4,12);
if(green_data>red_data&&green_data>blue_data)
LCD12864_char16x16(6,2,8),LCD12864_char16x16(6,4,12);
if(blue_data>red_data&&blue_data>green_data)
LCD12864_char16x16(6,2,9),LCD12864_char16x16(6,4,12);
}
}
(0.55 MB)下載
動(dòng)心忍性1234: 您好我是無線電雜志的編輯,我們對您的項(xiàng)目十分感興趣,請問您有興趣投稿嗎?成為我們的作者除稿費(fèi)外還有其他優(yōu)厚條件。敬請參與。投稿請聯(lián)系QQ260534978.
回復(fù)
精意2016: 你好!我現(xiàn)在要用VEML6040這個(gè)傳感器 現(xiàn)在根據(jù)規(guī)格書 寫的通信 邏輯分析儀看邏輯也正確 但是現(xiàn)在面臨的問題 讀不到任何數(shù)據(jù) 不知道什么原因想請教你 QQ1412112882 萬分感謝
回復(fù)