我們正試圖製作一個程序,通過擊鍵改變連接到我們Arduino的LED的亮度。 C串行端口通信部分已經完成,但我們在Arduino部分遇到了一些問題。試圖通過在c中輸入字符來改變Arduino中LED的亮度
int LedPin = 3;
int brightness = 90;
char deger;
void setup() {
Serial.begin(9600);
pinMode(LedPin, OUTPUT);
}
void loop() {
if(Serial.available()>0)
deger = Serial.read();
if(deger== 'C') {
brightness = 0;
analogWrite (LedPin, brightness);
} //to set the brightness to 0 after an error
if(deger== 'A') {
if(brightness>=255)
brightness = 0;
brightness=brightness+15; // to increase led brightness by 15 with every entry
analogWrite (LedPin, brightness);
}
if(deger== 'B') {
if(brightness<=0)
brightness = 254;
brightness=brightness-15; //to decrease led brightness by 15 with every entry
analogWrite (LedPin, brightness);
}
}
我們想要的亮度,從而提高當我們輸入「A」和減少當我們進入「B」,但發生的事情是隨機的亮度變化輸入和15時增加一個輸入B時的。你可以看到B的行爲與我們的意圖完全相反,A是隨機的。我們做錯了什麼?
儘量使亮度的字符,而不是一個int – OldProgrammer
首先,後是*調整亮度的代碼移動邊界測試*。否則,您最終會將0-255之外的值發送到analogWrite。我對Arduinos有更多的具體建議不夠熟悉,但這是任何系統上的一個通用問題。 – Torp
同意。在你的情況下,如果亮度爲250,則brigthness> 255的條件將爲false,然後將亮度增加15,並將此值寫入AnalogOutput。 –