#define LED1 2 #define LED2 3 #define LED3 4 #define LED4 5 #define LED5 6 #define LED6 7 #define LED7 8 #define LED8 9 #define LED9 10 #define BUTTON_UP A0 #define BUTTON_DOWN A1 #define BUTTON_LEFT A2 int leds[9] = { LED1, LED2, LED3, LED4, LED5, LED6, LED7, LED8, LED9 }; int led_matrix[9] = { 0, 0, 0, 0, 0, 0, 0, 0, 0 }; int values[9] = { 0, 0, 0, 0, 0, 0, 0, 0, 0 }; int current_led = 0; bool led_state = 1; bool button_up_pressed = 0; bool button_down_pressed = 0; bool button_left_pressed = 0; int current_led_column = 0; int current_led_row = 0; int counter = 1; void setup() { for (int i = 0; i < 9; i++) { pinMode(leds[i], OUTPUT); } pinMode(BUTTON_UP, INPUT_PULLUP); pinMode(BUTTON_DOWN, INPUT_PULLUP); pinMode(BUTTON_LEFT, INPUT_PULLUP); Serial.begin(9600); } void buttons() { if (!digitalRead(BUTTON_UP) and !button_up_pressed) { button_up_pressed = true; current_led_column = (current_led_column + 1) % 3; } if (digitalRead(BUTTON_UP) and button_up_pressed) { button_up_pressed = false; } if (!digitalRead(BUTTON_LEFT) and !button_left_pressed) { button_left_pressed = true; current_led_row = (current_led_row + 1) % 3; } if (digitalRead(BUTTON_LEFT) and button_left_pressed) { button_left_pressed = false; } current_led = current_led_row * 3 + current_led_column; //Serial.println(digitalRead(BUTTON_LEFT)); if (!digitalRead(BUTTON_DOWN) and !button_down_pressed) { button_down_pressed = true; values[current_led] = counter; counter++; } if (digitalRead(BUTTON_DOWN) and button_down_pressed) { button_down_pressed = false; } } int empty() { int i = 0; while (values[i] > 0) i++; return i; } void blink() { for (int i = 0; i < 9; i++) { if (current_led != i) { digitalWrite(leds[i], values[i]); } } if (millis() % 300 == 0) { led_state = !led_state; digitalWrite(leds[current_led], led_state); } } void output() { for (int i = 0; i < 9; i++) { if (i % 3 == 0) Serial.println(); Serial.print(values[i]); Serial.print(" "); } } void loop() { //Ввод пятнашек while (counter < 9) { blink(); buttons(); delay(1); } output(); //Бесконечный цикл while (true) ; }