const int ledPins[8] = {2, 3, 4, 5, 6, 7, 8, 9};
const int buttonPins[8] = {10, 11, 12, 13, 14, 15, 16, 17};
int storedCode = 0;
int inputCode = 0;
void setup() {
for (int i = 0; i < 8; i++) {
pinMode(ledPins[i], OUTPUT);
pinMode(buttonPins[i], INPUT_PULLUP);
}
Serial.begin(9600);
}
void loop() {
if (!digitalRead(buttonPins[0])) {
inputCode = getInput();
delay(200);
}
if (!digitalRead(buttonPins[1])) {
checkCode();
delay(200);
}
if (!digitalRead(buttonPins[2])) {
resetCode();
delay(200);
}
displayCode(inputCode);
}
int getInput() {
int code = 0;
for (int i = 0; i < 8; i++) {
if (!digitalRead(buttonPins[i])) {
code |= (1 << i);
while (!digitalRead(buttonPins[i]));
}
}
return code;
}
void displayCode(int code) {
for (int i = 0; i < 8; i++) {
digitalWrite(ledPins[i], (code & (1 << i)) ? HIGH : LOW);
}
}
void checkCode() {
if (inputCode == storedCode) {
resetCode();
} else {
for (int i = 0; i < 8; i++) {
digitalWrite(ledPins[i], HIGH);
}
}
}
void resetCode() {
inputCode = 0;
displayCode(inputCode);
}
Дано: 8 светодиодов, 8 резисторов номиналом 220 Ом и 12 резисторов номиналом 10 кОм, 12 кнопок, провода, контроллер.