我正在嘗試爲Arduino Uno編寫一個簡單的控制程序,用於在工作中運行的實驗。非常簡單,只需要讀取輸入引腳是否爲高電平,如果等待10毫秒以將輸出引腳變爲高電平,保持10毫秒然後變爲低電平,否則輸出引腳爲低電平。Arduino循環錯誤:等待幾秒鐘以響應輸入變化
我的問題是,當我運行它時,它會忽略最初的延遲,並且輸出引腳在低電平前保持高電平幾秒。 (使用delayMicroseconds)
void setup()
{
pinMode(8, INPUT);
pinMode(13, OUTPUT);
}
void loop()
{
if (digitalRead(8) == HIGH)
{
delayMicroseconds(10000); //wait 10 milliseconds
digitalWrite(13, HIGH); // Pump on
delayMicroseconds(10000); // holds for pulse width of 10 millisecond
digitalWrite(13, LOW); // Pump off
}
else
{
}
}
我已經嘗試建立一些簡單的使用延時功能,等待一秒鐘,然後打開輸出引腳爲高電平,等待秒鐘,然後將腳輸出低電平調試。我這樣做是爲了使用Arduino內置的LED進行可視化調試。結果是它在輸入引腳變爲低電平後實際上繼續運行循環3次。 (使用延遲)
void setup()
{
pinMode(8, INPUT);
pinMode(13, OUTPUT);
}
void loop()
{
if (digitalRead(8) == HIGH)
{
delay(1000); //wait 1 second
digitalWrite(13, HIGH); // Pump on
delay(1000); // hold for 1 second
digitalWrite(13, LOW); // Pump off
}
else
{
}
}
我似乎無法弄清楚它爲什麼這樣做。我已經找遍了,似乎無法找到有關爲什麼會發生這種情況的信息。我可能會錯過一些非常簡單的東西,我不是一個有經驗的編碼員,我只是寫我需要運行實驗的東西。我試着用c代碼直接讀寫引腳寄存器,並且從if語句切換到while循環,但他們都沒有解決問題。任何見解都非常感謝。
原理圖在哪裏? –
您可以通過USB端口將電路板連接到PC以使用「串行」接口進行調試嗎?另外:你是否試圖在'setup()'中將引腳13初始設置爲'LOW'? –
由於連接的LED /電阻,引腳13的行爲也有所不同。我會建議嘗試另一個引腳。還使用(或打開)上拉電阻。在setup()中將引腳設置爲LOW。 –