Не могу сделать смену режима кнопкой, как?

Для реализации смены режима кнопкой в Arduino вам потребуется некоторый код и несколько простых компонентов.

Прежде всего, вам понадобится кнопка (обычно используются так называемые кнопки с "плавным" нажатием, чтобы избежать дребезга контактов) и резистор подтяжки (обычно 10к Ом). Кнопка подключается между выводом пина Arduino и землей, а к выводу пина подключается также резистор подтяжки к питающему напряжению.

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

              |
              |
             ---
             | |
Button  -----| |
             | |
              -
              |
Pin -----------

После того как вы подключили вашу кнопку к пину Arduino, вы можете начать писать код для управления режимами.

В начале вашей программы следует объявить переменные, которые будут хранить информацию о состоянии кнопки и текущем режиме. Например:

const int buttonPin = 2;  // введите номер пина, к которому подключена кнопка
int buttonState = HIGH;  // состояние кнопки
int lastButtonState = HIGH;  // предыдущее состояние кнопки
int mode = 0;  // текущий режим

Затем, в функции setup() следует настроить пин кнопки как вход и включить внутренний подтягивающий резистор:

void setup() {
  pinMode(buttonPin, INPUT);
  digitalWrite(buttonPin, HIGH);  // включить внутренний подтягивающий резистор
  // ...
}

Теперь мы можем реализовать логику смены режима. В функции loop() можно использовать следующий код:

void loop() {
  buttonState = digitalRead(buttonPin);  // считываем состояние кнопки

  if (buttonState != lastButtonState) {
    if (buttonState == LOW) {  // кнопка нажата
      mode = (mode + 1) % 3;  // изменение режима (в примере 3 режима)
      // выполнение вашего кода для каждого режима
    }

    delay(50);  // задержка для подавления дребезга
  }

  lastButtonState = buttonState;
}

В данном примере используется условие проверки buttonState != lastButtonState, чтобы избежать множественных срабатываний при установке кнопки в стабильное состояние (высокий уровень).

Также в коде используется функция delay(50) для подавления дребезга контактов кнопки. Значение 50 миллисекунд можно изменить в зависимости от ваших конкретных требований.

Наконец, в блоке // выполнение вашего кода для каждого режима вы можете вставить свой код, который будет выполняться в зависимости от текущего режима. Это может быть управление другими компонентами Arduino, вывод информации на дисплей и т. д.

Таким образом, вы реализовали смену режима кнопкой в Arduino.