在開始之前,我想明確表示我仍然是 C 和 Arduino 電子學的初學者,所以對于比我多一周經驗的人來說,答案可能非常明顯。
但對我來說,這完全是個謎。感謝您的任何幫助。
首先是代碼:
int potPosition;
int delayTime;
void setup() {
Serial.begin(9600);
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
}
void loop() {
potPosition = analogRead(A0);
Serial.println(potPosition);
if (potPosition < 16) {
delayTime == 16;
} else if (potPosition >= 16){
delayTime == analogRead(A0);
}
digitalWrite(13, HIGH);
digitalWrite(12, HIGH);
digitalWrite(11, HIGH);
digitalWrite(10, HIGH);
digitalWrite(9, HIGH);
delay(delayTime);
digitalWrite(13, LOW);
digitalWrite(12, LOW);
digitalWrite(11, LOW);
digitalWrite(10, LOW);
digitalWrite(9, LOW);
delay(delayTime);
}
這一切都寫在 Arduino Genius IDE 中,我將它輸出到一個 Sparkfun 電子 Arduino,其中 5 個 LED 連接到它,由一個電位器控制,它通過輸出一個值來設定打開和關閉延遲,我將延遲時間設為毫秒LED 閃爍。所有的電子線路都是正確的,當我洗掉該if陳述句并正常運行它時,一切都按我預期的那樣作業。
所以你可能想知道,問題是什么?好吧,目前當potPosition超過某個值(以毫秒為單位的延遲值)太低時,LED 將不再閃爍,因為延遲太小以至于無法看到閃光燈。這是預期的結果,因為接近 0 毫秒的延遲非常小。
我想用我的 if 陳述句做什么:
if (potPosition < 16) {
delayTime == 16;
} else if (potPosition >= 16){
delayTime == analogRead(A0);
}
是如果potPosition- 撥號的值,即毫秒延遲 - 低于某個數字(最后一個值是足夠長的延遲以使閃爍效果仍然可見)將我設定delayTime回該值,如果potPosition是值或更高的值,然后將 設定delayTime為電位器輸出的任何延遲。
然而,目前,當我將此代碼下載到我的 Arduino 上時,無論我的電位器輸出什么值,我的所有燈都顯得暗淡(當我的延遲時間極短時它們會這樣做),這不是我想要的,而且我不知道為什么我的if宣告沒有正確重置我的延遲時間。
在開始使用 Sparkfun 電子套件之前,我從未真正撰寫過 C 代碼,并且只使用過 Python,所以我可能錯過了 C 編程的一個關鍵方面,但我不知道那會是什么。
對這個問題的任何幫助都會很棒,我很樂意回答任何問題。
uj5u.com熱心網友回復:
thisdelayTime == analogRead(A0);和 thisdelayTime == 16; 是比較,即delayTime保持未初始化并且您得到未定義的行為。
我敢打賭你想在那里寫一個值,就像 indelayTime = analogRead(A0);或者可能 delayTime = potPosition;(對于 other 一樣==)。后者對我來說似乎更合理,因此每次回圈迭代只有一次模擬讀取。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/472994.html
下一篇:如何將值從電路板保存/加載到檔案
