Доброго времени суток! Есть задача: надо сделать так, чтобы после заданной заранее последовательности нажатия пяти тактовых кнопок включался светодиод (можно даже вариант с просто последовательным нажатием кнопок 1,2,3,4,5)
Я слаб пока в написании скетчей, но вот что у меня вышло. Может кто-нибудь подскажет в чем может быть ошибка?
`const int button1Pin = 2; // Пин кнопки 1
const int button2Pin = 3; // Пин кнопки 2
const int button3Pin = 4; // Пин кнопки 3
const int button4Pin = 5; // Пин кнопки 4
const int button5Pin = 6; // Пин кнопки 5
const int ledPin = 13; // Пин светодиода
int button1State = 0; // Состояние кнопки 1
int button2State = 0; // Состояние кнопки 2
int button3State = 0; // Состояние кнопки 3
int button4State = 0; // Состояние кнопки 4
int button5State = 0; // Состояние кнопки 5
int buttonSequence = {1, 2, 3, 4, 5}; // Последовательность нажатия кнопок
int buttonIndex = 0; // Индекс текущей кнопки в последовательности
void setup() {
pinMode(button1Pin, INPUT);
pinMode(button2Pin, INPUT);
pinMode(button3Pin, INPUT);
pinMode(button4Pin, INPUT);
pinMode(button5Pin, INPUT);
pinMode(ledPin, OUTPUT);
// Выключаем светодиод
digitalWrite(ledPin, LOW);
}
void loop() {
// Проверка нажатия первой кнопки
if (digitalRead(button1Pin) == HIGH) {
button1State = 1;
} else {
button1State = 0;
}
// Проверка нажатия второй кнопки
if (digitalRead(button2Pin) == HIGH) {
button2State = 1;
} else {
button2State = 0;
}
// Проверка нажатия третьей кнопки
if (digitalRead(button3Pin) == HIGH) {
button3State = 1;
} else {
button3State = 0;
}
// Проверка нажатия четвертой кнопки
if (digitalRead(button4Pin) == HIGH) {
button4State = 1;
} else {
button4State = 0;
}
// Проверка нажатия пятой кнопки
if (digitalRead(button5Pin) == HIGH) {
button5State = 1;
} else {
button5State = 0;
}
// Проверка последовательности нажатия кнопок
if (button1State == buttonSequence[buttonIndex] &&
button2State == buttonSequence[buttonIndex + 1] &&
button3State == buttonSequence[buttonIndex + 2] &&
button4State == buttonSequence[buttonIndex + 3] &&
button5State == buttonSequence[buttonIndex + 4]) {
buttonIndex += 5; // Увеличиваем индекс на 5 при совпадении последовательности
}
// Если индекс последовательности достиг максимального значения, включаем светодиод
if (buttonIndex == sizeof(buttonSequence)/sizeof(buttonSequence[0])) {
digitalWrite(ledPin, HIGH);
}
}`