我正在使用Arduino Uno並嘗試將兩部分的學校項目編碼在一起。兩個部分單獨工作良好,但合併後,只有部分1工作。 第1部分:涉及1個按鈕開關,2個LED,其中一個保持打開狀態,另一個保持關閉狀態,該按鈕將變爲打開或關閉狀態。 第二部分:伺服電位器控制Arduino編碼問題:兩部分組合不起作用
我確定伺服器只有在按下按鈕時纔會結束工作,這不應該發生,電位器/伺服代碼不應該依賴於代碼爲LED。我絕對是一個初學者,並且不太瞭解代碼的功能,所以請原諒我的任何冗餘。任何幫助深表感謝。
#include <Servo.h>
Servo myServo;
int const potPin = A0;
int potVal;
int angle;
int switchState;
int lastSwitchState = 0;
const int bluePin = 3;
const int yellowPin = 4;
const int button = 2;
int bluelight = LOW;
int yellowlight = HIGH;
void setup(){
pinMode(bluePin, OUTPUT); //blue LED
pinMode(yellowPin, OUTPUT); //yellow LED
pinMode(button, INPUT); //switch
myServo.attach(9);
Serial.begin(9600);
}
void loop(){
// PART 1 - this is the only part that seems to be working now?
switchState = digitalRead(button);
while (digitalRead(button)==LOW);
if (digitalRead(button)==LOW){
bluelight=!bluelight;
digitalWrite(bluePin, bluelight);
digitalWrite(yellowPin, yellowlight);
}
else{
if (switchState=!lastSwitchState) {
yellowlight=!yellowlight;
bluelight=!bluelight;
digitalWrite(yellowPin, yellowlight);
digitalWrite(bluePin, bluelight);
}
}
// PART 2 - Only works when button is pressed?
potVal = analogRead(potPin);
Serial.print("potVal: ");
Serial.print(potVal);
angle = map(potVal, 0, 1023, 0, 179);
Serial.print(", angle: ");
Serial.println(angle);
myServo.write(angle);
delay(250); //wait for a quarter second
}
當我拿出while語句,其工作代碼它不起作用,所以我不確定我在if語句中做了什麼錯誤。有什麼建議要改變它,以便開關切換哪個燈保持點亮? – user3350391
現在你必須糾正你的if語句。如果按鈕爲低電平,則不進行任何操作,如果高電平切換LED狀態。請注意,如果持續按下led按鈕,將持續打開和關閉。按鈕邏輯也可能倒置,取決於wh。 – Lesto