Выйдите из цикла и снова выполните настройку.

Я хочу завершить цикл в определенное время и снова начать настройку. Это возможно? (Я могу объяснить причину, если вам нужно).

, 👍1

Обсуждение

Как предположили другие, это не то, как работает программа Arduino. Он запускает функцию настройки один раз, а затем повторно и навсегда вызывает функцию цикла, пока она не будет отключена или сброшена. Вам придется объяснить, что вы пытаетесь сделать, чтобы мы помогли вам заставить это работать., @Duncan C


2 ответа


Лучший ответ:

6

Вы можете просто вызвать setup() самостоятельно:

void loop() {
    if (some_condition) {
        setup();  // переинициализируем все
        return;
    }
    // так далее.
}

Но, как говорит Маженко, если вам нужно это сделать, похоже, что-то не так с вашей методологией.

При этом было бы менее подозрительно, если бы вам нужно было только повторно инициализировать определенную часть вашей программы. В этом случае вы можете сделайте отдельную функцию для этих инициализаций и назовите ее обеими из setup() и, при необходимости, из loop():

void init_foo() {
    // ...
}

void setup() {
    init_foo();
    // другие инициализации...
}

void loop() {
    if (some_condition) {
        init_foo();  // повторно инициализируем foo
        return;
    }
    // так далее.
}
,

1

Не напрямую, нет. Однако вы можете перезагрузить Arduino, чтобы все началось с нуля (либо с помощью сторожевого таймера, либо путем подключения вывода GPIO к RESET и вытягиванию его на НИЗКИЙ уровень), но если вы обнаружите, что вам нужно делать такие вещи, вам следует пересмотреть свою методологию, чтобы вам не нужно делать такие вещи.

,