Tôi còn khá mới với lập trình Arduino. Tôi gặp vấn đề khi biên dịch đoạn mã sau:
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;
}
}
Vì một số lý do, trình biên dịch bị thuyết phục rằng biến lastTime_Debounce1
trong câu lệnh IF thứ hai, trên Dòng 54, chưa được khai báo trong phạm vi. Tôi không hiểu làm thế nào điều này là có thể, vì biến trong câu hỏi là một toàn cầu được xác định và khởi tạo.
Nếu tôi nhận xét về bộ ba câu lệnh IF đầu tiên (xử lý Nút 1), bộ ba thứ hai (nút xử lý 2) không có vấn đề biên dịch, mặc dù nó thực hiện chính xác cùng một cách chính xác.
Tôi đã kiểm tra tất cả các nghi phạm thông thường: đánh vần, niềng răng, dấu chấm phẩy, thậm chí các khối mã được nhận xét một lần, nhưng tôi không thể tìm thấy nguồn gốc của vấn đề. Tôi đang sử dụng IDE Arduino 1.8.2.
Ai đó có thể vui lòng chỉ ra lỗi tôi đang thiếu?