Как реализовать разные действия на разные промежутки времени?

Для реализации разных действий на разные промежутки времени в Arduino вы можете использовать функцию millis(), которая возвращает количество миллисекунд, прошедших с момента запуска платы Arduino. С помощью этой функции можно создать таймеры и отслеживать промежутки времени для выполнения определенных действий.

Вот пример кода, который демонстрирует, как это сделать:

const unsigned long interval1 = 2000; // интервал времени для действия 1 (в миллисекундах)
const unsigned long interval2 = 5000; // интервал времени для действия 2 (в миллисекундах)
unsigned long previousMillis = 0;     // хранит значение времени последнего выполнения действия

void setup() {
  // инициализация
  Serial.begin(9600); // инициализация последовательного порта
}

void loop() {
  // получение текущего значения времени с помощью millis()
  unsigned long currentMillis = millis();

  // выполнение действия 1 каждые 2 секунды
  if (currentMillis - previousMillis >= interval1) {
    previousMillis = currentMillis; // сохраняем текущее время как время последнего выполнения действия
    action1(); // вызываем функцию для выполнения действия 1
  }

  // выполнение действия 2 каждые 5 секунд
  if (currentMillis - previousMillis >= interval2) {
    previousMillis = currentMillis; // сохраняем текущее время как время последнего выполнения действия
    action2(); // вызываем функцию для выполнения действия 2
  }

  // ваш остальной код
}

void action1() {
  // здесь выполняются действия для действия 1
}

void action2() {
  // здесь выполняются действия для действия 2
}

В этом примере кода loop() функция проверяет, прошло ли достаточное количество времени с момента последнего выполнения действия 1 или действия 2, используя currentMillis - previousMillis >= interval1 и currentMillis - previousMillis >= interval2. Если условие выполнено, то соответствующая функция action1() или action2() вызывается, и переменная previousMillis обновляется.

Вы можете настроить interval1 и interval2 на требуемые временные интервалы для выполнения ваших действий. Если вам нужно добавить больше действий, просто добавьте дополнительный блок проверки условия и функцию выполнения действия.

Также обратите внимание, что использование millis() позволяет выполнить действия без блокировки выполнения другого кода, так как она работает на основе времени, а не задержек delay(). Это позволяет программе Arduino выполнять другие задачи во время ожидания временных промежутков, что может быть полезно, если вы планируете выполнить дополнительные действия или считывать данные с различных датчиков.