求解,这段代码为啥不对
int CCD_Grayscale_Data={0};
int CCD_SI =2;
int CCD_CLK=3;
int b,c;
void setup()
{
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(A4,INPUT);
Serial.begin(9600);
}
void CAI(void)
{//线阵CCD数据采集部分
digitalWrite (CCD_SI, HIGH);
digitalWrite (CCD_SI, LOW);
digitalWrite (CCD_CLK, HIGH);
digitalWrite (CCD_CLK, LOW);
int i;
for(i=0;i<128;i++)
{
delayMicroseconds(1);
b=analogRead(A4)/4;
CCD_Grayscale_Data=b;
digitalWrite (CCD_CLK, LOW);
delayMicroseconds(1);
Serial.println(CCD_Grayscale_Data);
digitalWrite (CCD_CLK, HIGH);
}
delayMicroseconds(1);
CCD_CLK = 0;
}
void loop() {
Serial.println("CCC");
CAI();
}
本帖最后由 Super169 于 2014-9-19 17:31 编辑
樓主不把問題說出來, 這有點像 IQ 題.
compile 應該沒問題, 執行時不知樓主遇到什麼問題.
如果通訊的時間性很重要的話, 把中間的 Serial.println 刪走, 在 CAI 最後才顯示全部出來, 這樣發出 LOW HIGH 的時間會比較準確一點. delayMicroseconds(1);
Serial.println(CCD_Grayscale_Data);
digitalWrite (CCD_CLK, HIGH);要用到 delayMicroseconds 去計算的話, 一句 Serial.println 已經打亂了....
甚至 analogRead 那句, 已經有一定影響. Super169 发表于 2014-9-19 17:27 static/image/common/back.gif
樓主不把問題說出來, 這有點像 IQ 題.
compile 應該沒問題, 執行時不知樓主遇到什麼問題.
= =串口看的话值不对,一直是255 就爱吃泡芙 发表于 2014-9-19 18:35 static/image/common/back.gif
= =串口看的话值不对,一直是255
代碼是從 A4 讀回數值, 若讀回的值是 1023(即電壓為滿度),經除 4後,顯示為 255 應是正常的。
看來要檢查 A4 了。
页:
[1]