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



donatello1996
團隊成員
donatello1996 學生
VEML6040環境顏色套件
MDK Keil 5.18
LPC800.pack
MBED驅動
main()函數代碼如下:
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)下載
動心忍性1234: 您好我是無線電雜志的編輯,我們對您的項目十分感興趣,請問您有興趣投稿嗎?成為我們的作者除稿費外還有其他優厚條件。敬請參與。投稿請聯系QQ260534978.
回復
精意2016: 你好!我現在要用VEML6040這個傳感器 現在根據規格書 寫的通信 邏輯分析儀看邏輯也正確 但是現在面臨的問題 讀不到任何數據 不知道什么原因想請教你 QQ1412112882 萬分感謝
回復