Скетч для простейшего замка с паролем

Доброго времени суток! Есть задача: надо сделать так, чтобы после заданной заранее последовательности нажатия пяти тактовых кнопок включался светодиод (можно даже вариант с просто последовательным нажатием кнопок 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);
}
}`

Читали инструкцию в поле ввода, куда свой текст писали?

проверка никуда не годится. В массиве последовательности у вас номера кнопок от 1 до 5, а состояния кнопок, которые вы с массивом сравниваете - только 0 или 1. Они никогда не совпадут.

Кроме этой ошибки есть более важная - ваша проверка сравнивает номера кнопок, но никак не проверяет последова ельность нажатия

  1. Нужно менять логику

ЗЫ: Может уже Александер (или иной “приближенный”) выделит “вставку кода” каким-нибудь ядовито зелёненьким или вырви глаз оражевененьким прямо в окне набора текста? Чего мы всё по 100500 тысяч раз одно и тоже обводим…

Надо для возможности ввода сообщения пройти тестирование - выделение любым цветом не поможет …

1 лайк

На некоторых радиотехнических сайтах при регистрации нужно пройти небольшой тест по теме. Например :" каково сопротивление параллельных резисторов 10кОм и 20кОм?"
Может и здесь нечто подобное организовать?

Достаточно двух вопросов: как отформатировать скетч и как его вставить в форум.

2 лайка

Ответ оформить на 18 листах А4 14 шрифтом? )))

Похоже, тест ты провалил.) ^T в IDE и ``` всего то.

1 лайк

судя по форуму, об этом можно романы писать…

в коде присутствовали номера строк.

Решайте задачу, а там посмотрим.

А, смайлика в конце строки не хватает. Сейчас исправим.

Готовое решение
37664442

3 лайка

я не пройду…