Arduino 프로그래밍에 익숙하지 않습니다. 다음 코드를 컴파일하는 데 문제가 있습니다.
const int relay1 = 10; //Power Relay 1
const int relay2 = 11; //Power Relay 2
const int relay3 = 12; //Toggle Relay
const int button1 = 3;
const int button2 = 4;
const int button3 = 5;
//---Button States---\\
int button1State; //Current state of Button 1
int button2State; //Current state of Button 2
int button3State; //Current state of Button 3
int button1State_prev = LOW; //Previous state of Button 1
int button2State_prev = LOW; //Previous state of Button 2
int button3State_prev = LOW; //Previous state of Button 3
//---General Variables---\\
int userSelection = 0;
int interlockState = 0;
int platformState = 0;
//---Interval-Tracking Variables---\\
unsigned long lastTime_Debounce1 = 0; //Button 1 debounce time
unsigned long lastTime_Debounce2 = 0; //Button 2 debounce time
//---Activity Delays---\\
const unsigned int relayDelay = 10; //Delay between relay actions (ms)
const unsigned int debounceDelay = 60; //Delay for button de-bouncing (ms)
void setup() {
//Configure Pins
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
pinMode(button1, INPUT);
pinMode(button2, INPUT);
pinMode(button3, INPUT);
digitalWrite(relay1, LOW);
digitalWrite(relay2, LOW);
digitalWrite(relay3, LOW);
}
void loop() {
//Read value of each input pin
int button1Reading = digitalRead(button1); //Current reading of Button 1
int button2Reading = digitalRead(button2); //Current reading of Button 2
int button3Reading = digitalRead(button3); //Current reading of Button 3
//Debounce Button1
if (button1Reading != button1State_prev) {
lastTime_Debounce1 = millis();
}
button1State_prev = button1Reading;
if ((millis() - lastTime_Debounce1) > debounceDelay) {
if (button1Reading != button1State) {
button1State = button1Reading;
}
}
//Debounce Button2
if (button2Reading != button2State_prev) {
lastTime_Debounce2 = millis();
}
button2State_prev = button2Reading;
if ((millis() - lastTime_Debounce2) > debounceDelay) {
if (button2Reading != button2State) {
button2State = button2Reading;
}
}
어떤 이유로, 컴파일러는 lastTime_Debounce1
54 행의 두 번째 IF 문의 변수 가 범위 내에서 선언되지 않았 음을 확신합니다 . 문제의 변수가 정의되고 초기화 된 전역이기 때문에 이것이 어떻게 가능한지 이해하지 못합니다.
IF 문의 첫 번째 트리오 (처리 버튼 1)를 주석 처리하면 두 번째 트리오 (처리 버튼 2)는 정확히 동일한 방식으로 컴파일해도 문제가 없습니다.
맞춤법, 중괄호, 세미콜론, 한 번에 하나씩 주석 처리 된 코드 블록까지 모든 일반적인 용의자를 확인했지만 문제의 원인을 찾을 수 없습니다. Arduino 1.8.2 IDE를 사용하고 있습니다.
누군가 내가 누락 된 실수를 지적 할 수 있습니까?
1
구문 강조 표시로 문제가 더 분명해 지지만 불행히도 그렇지 않은지 확인하기 위해 C ++ 태그로 질문에 태그를 지정했습니다.
—
Nick Gammon