1
所以我正在爲一些罐頭針寫這個小函數。鍋只在轉動時發送一個值,在休息時它不發送任何東西。這是我希望它的功能。如何寫入多個模擬引腳的功能? (arduino)
它與一個引腳工作正常。
我已經得到它的一半,它與多個引腳工作的一點。所以如果我在兩個引腳的循環中調用它兩次,我會在這兩個引腳上找回正確的值。但是我放棄了if語句的功能。基本上我無法弄清楚這個的後半部分。陣列已被建議我只是不確定如何進行。
對此提出建議?謝謝。
byte pots[2] = {A0, A2};
int lastPotVal = 0;
void setup(){
Serial.begin(9600);
}
void loop(){
// get the pin out of the array
rePot(pots[0]);
rePot(pots[1]);
delay(10);
}
void rePot(const int potPin){
// there is probably an issue around here somewhere...
int potThresh = 2;
int potFinal = 0;
int potVal = 0;
// set and map potVal
potVal = (analogRead(potPin));
potVal = map(potVal, 0, 664, 0, 200);
if(abs(potVal - lastPotVal) >= potThresh){
potFinal = (potVal/2);
Serial.println(potFinal);
lastPotVal = potVal;
} // end of if statement
} // end of rePot
只有一個問題我自己學習的目的: rePot(結構*鍋鍋)......這只是重新命名「鍋」到「鍋」?我習慣於*倍增,所以想知道這個陳述中的含義以及爲什麼它完成了。 –
在這種情況下,*指定一個指針。所以,該函數需要一個指向Pot結構的指針,並且該指針被命名爲「pot」。在函數定義中使用「struct」是C中一個奇怪的角落,它與C++不同。你基本上可以忽略「結構」,只是把它看作是「rePot(Pot * pot)」,它轉換爲「一個叫做rePot的函數,它將一個指向一個Pot的指針稱爲pot,它可能更清楚地稱之爲有點像rePot(Pot * theInputPot) – admsyn
附加問題:我在程序的其他地方有一個blinkLED函數,我主要用它作爲按鈕,它只是在onlength/offlength的地方,offlength是一個延遲,我試圖使用它但是如果延遲超過50就會導致底池讀數錯亂,爲什麼會出現這種情況呢?我在猜測它是因爲延遲會降低底池讀數的速度,因爲它會循環通過? –