2014-04-29 40 views
1

我一直在嘗試過去的幾個小時得到一個光門計時器與2個光電管和激光器一起工作。它就像一個跳閘線,當第一個傳感器處於低電平(當它跳閘時)時,它會觸發開始時間。然後應該繼續,然後使用與觸發傳感器1相同的方法觸發第二個傳感器時停止定時器。我現在面臨的問題是計時器永不停止。這似乎是我的第二個傳感器的問題,我已經切換了第二個傳感器,並且傳感器似乎很好。另一個問題是,當第二個傳感器也被觸發時,計時器會發生奇怪的事情。似乎每次我重置或將新版本的代碼放到Arduino上時,它都會做出不同的事情,這很奇怪。我嘗試了各種其他的代碼,但似乎沒有工作。如果你有一個類似的代碼或者可以幫助我使用這段代碼,那會很棒。光門定時器Arduino

下面是我的代碼:

int sensor1 = 2; 
int sensor2 = 3 ; 

long startTime; 
long endTime; 
float elapsedTime; 
long pause = 0; 

void setup() { 
    Serial.begin (9600); 
    Serial.println ("RPV"); 

    pinMode (sensor1, INPUT); 
    pinMode (sensor2, INPUT); 

} 

void loop() { 

    if (analogRead(sensor1) == 0) { 
    Start(); 
    Serial.println (elapsedTime); 
    } 

    if (analogRead(sensor2) == 0) { 
    Stop(); 
    //Serial.println (endTime); 

    } 
} 

void Start(){ 
    startTime = millis(); 
} 

void Stop() { 
    endTime = millis(); 
    elapsedTime = (endTime - startTime); 
    elapsedTime = elapsedTime/1000; 
    Serial.print("Time Seconds: "); 
    Serial.println(elapsedTime); 

} 

回答

0

嘗試通過寫analogRead串行測試傳感器。 我的猜測是analogRead永遠不會是0,因爲總會有環境光線。

你的門檻應該更analogRead(sensor1) < somevalue)

+0

你說得對有關環境照明,但會有傳感器周圍的黑色外殼,只得到儘可能多的激光成爲可能。在模擬讀串口之後,看起來傳感器再次沒有讀數。我會嘗試從那裏找到一個新的。 – Ed3121577