就爱吃泡芙 发表于 2014-9-19 14:55:25

求解,这段代码为啥不对



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:27:38

本帖最后由 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 那句, 已經有一定影響.

就爱吃泡芙 发表于 2014-9-19 18:35:21

Super169 发表于 2014-9-19 17:27 static/image/common/back.gif
樓主不把問題說出來, 這有點像 IQ 題.

compile 應該沒問題, 執行時不知樓主遇到什麼問題.


= =串口看的话值不对,一直是255

eddiewwm 发表于 2014-9-19 23:58:48

就爱吃泡芙 发表于 2014-9-19 18:35 static/image/common/back.gif
= =串口看的话值不对,一直是255

代碼是從 A4 讀回數值, 若讀回的值是 1023(即電壓為滿度),經除 4後,顯示為 255 應是正常的。

看來要檢查 A4 了。
页: [1]
查看完整版本: 求解,这段代码为啥不对