|
先介紹一下CCD模塊:該模塊有幾個(gè)重要的針腳
VCC:接電源正極 3.3v-5v
GND:接地
CLK:時(shí)鐘信號(hào)線
SI:邏輯信號(hào)線
AO:模擬信號(hào)輸出
1. 接法
一般VCC和GND都是直接接在單片機(jī)的接口上,如果獨(dú)立電源供電的話,注意要共地。AO接AD轉(zhuǎn)換接口。
2. 用法
使用方法如上圖所示
3. 代碼(這里使用arduino)
digitalWrite(CCD_SI,HIGH);//SI拉高電平
digitalWrite(CCD_CLK,HIGH);//時(shí)鐘高電平
digitalWrite(CCD_SI,LOW);//SI低電平
digitalWrite(CCD_CLK,LOW);//時(shí)鐘低電平
for(i=0;i<128;i++)
{
digitalWrite(CCD_CLK,HIGH);
digitalWrite(CCD_CLK,LOW);
}//從這里結(jié)束曝光
delayMicroseconds(exp_time);//曝光時(shí)間
digitalWrite(CCD_SI,HIGH);
digitalWrite(CCD_CLK,HIGH);
digitalWrite(CCD_SI,LOW);
piexl[0]=analogRead(A0);//AD,注意這個(gè)函數(shù)的返回值是0-1024的,所以至少要用10bit的大小才不會(huì)導(dǎo)致溢出。
if(piexl[0]==255) piexl[i]=254;
digitalWrite(CCD_CLK,LOW);
for(i=1;i<128;i++)
{
digitalWrite(CCD_CLK,HIGH);
piexl[i]=analogRead(A0);
digitalWrite(CCD_CLK,LOW);
}
digitalWrite(CCD_CLK,HIGH);
digitalWrite(CCD_CLK,LOW);
AD,注意這個(gè)函數(shù)的返回值是0-1024的,所以至少要用10bit的大小才不會(huì)導(dǎo)致溢出。
if(piexl[0]==255) piexl[i]=254;
digitalWrite(CCD_CLK,LOW);
for(i=1;i<128;i++)
{
digitalWrite(CCD_CLK,HIGH);
piexl[i]=analogRead(A0);
digitalWrite(CCD_CLK,LOW);
}
digitalWrite(CCD_CLK,HIGH);
digitalWrite(CCD_CLK,LOW);
4. 代碼介紹
每次使用ccd掃描數(shù)據(jù)的時(shí)候要進(jìn)行兩次時(shí)序操作,數(shù)據(jù)輸出在第二次。
第一次時(shí)序操作是用來初始化端口的電平,兩次電平操作中間的是曝光時(shí)間設(shè)置。
輸出結(jié)果一般轉(zhuǎn)換成8比特位的數(shù)值,對(duì)應(yīng)0-255的灰度值,白色是255,黑色是0
5. 常見問題解決
輸出不了數(shù)據(jù):檢查線路是否錯(cuò)誤。檢查電平操作是否正確。檢查是否有進(jìn)行兩次電平操作。
6. 數(shù)據(jù)查看
一般是使用串口將數(shù)據(jù)發(fā)送到上位機(jī)查看.
有現(xiàn)成的上位機(jī)軟件也可以自己去了解一下串口編程的api,自己編寫一個(gè)上位機(jī)。
|
|