Как сделать так, чтобы при нажатии кнопки, на дисплее LCD перестало отображаться время, а заходил в контекстное меню?

Для реализации данного функционала вам понадобятся следующие шаги:

1. Подключите дисплей LCD к Arduino. Убедитесь, что у вас подключен правильный тип и количество пинов.

2. Подключите кнопку к Arduino. Подключите один конец кнопки к одному пину ардуино, а другой конец - к земле (GND). Рекомендуется подключить резистор в 10К Ом к пину, чтобы предотвратить фальшивые нажатия кнопки.

3. В программе Arduino, используйте библиотеку LiquidCrystal для управления дисплеем LCD. Установите нужное количество колонок и строк вашего дисплея с помощью конструктора.

4. Узнайте пины, к которым подключена кнопка, и настройте их в программе, используя pinMode для установки режима ввода.

5. Используйте функцию loop для постоянного опроса состояния кнопки. Если кнопка нажата, выполните определенные действия.

6. Создайте переменную для отслеживания текущего режима отображения дисплея. Если режим "время", выполните код для отображения времени на дисплее. Если режим "контекстное меню", выполните код для отображения контекстного меню на дисплее.

7. В функции обработки нажатия кнопки, используйте if-else операторы для изменения текущего режима дисплея и выполнения соответствующего кода для каждого режима. Например, если режим "время", переключитесь в режим "контекстное меню". Если режим "контекстное меню", переключитесь в режим "время".

8. Используйте функцию delay, чтобы предотвратить дребезг контактов кнопки и установить задержку между опросами состояния кнопки.

Примерный код для реализации описанных шагов может выглядеть следующим образом:

#include <LiquidCrystal.h>

// Подключение пинов дисплея LCD
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

// Пин, к которому подключена кнопка
const int buttonPin = 6;

// Текущий режим дисплея
enum DisplayMode {
  Time,
  Menu
};

DisplayMode currentMode = Time;

void setup() {
  // Установка пинов кнопки в режим ввода
  pinMode(buttonPin, INPUT);

  // Настройка дисплея
  lcd.begin(16, 2);
}

void loop() {
  int buttonState = digitalRead(buttonPin);

  if (buttonState == HIGH) {
    // Обработка нажатия кнопки
    handleButtonPress();
  }

  if (currentMode == Time) {
    // Отображение времени на дисплее
    displayTime();
  } else if (currentMode == Menu) {
    // Отображение контекстного меню на дисплее
    displayMenu();
  }

  // Задержка между опросами кнопки
  delay(100);
}

void handleButtonPress() {
  if (currentMode == Time) {
    // Переключение в режим контекстного меню
    currentMode = Menu;

    // Выполнение действий для контекстного меню
    // ...
  } else if (currentMode == Menu) {
    // Переключение в режим времени
    currentMode = Time;

    // Выполнение действий для времени
    // ...
  }
}

void displayTime() {
  // Код для отображения времени на дисплее
  // ...
}

void displayMenu() {
  // Код для отображения контекстного меню на дисплее
  // ...
}

Обратите внимание, что вам может потребоваться настроить код для отображения времени и контекстного меню, в соответствии с вашими потребностями. Также возможно, что потребуется добавить дополнительные действия при переключении между режимами. В зависимости от конкретных требований вашего проекта, вы можете внести нужные изменения в приведенный выше код.

Разборанный код представлен лишь в качестве примера и может быть доработан в зависимости от ваших требований.