Выйдите из цикла и снова выполните настройку.
Я хочу завершить цикл в определенное время и снова начать настройку. Это возможно? (Я могу объяснить причину, если вам нужно).
@Bhavya Gupta, 👍1
Обсуждение2 ответа
Лучший ответ:
Вы можете просто вызвать 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;
}
// так далее.
}
Не напрямую, нет. Однако вы можете перезагрузить Arduino, чтобы все началось с нуля (либо с помощью сторожевого таймера, либо путем подключения вывода GPIO к RESET и вытягиванию его на НИЗКИЙ уровень), но если вы обнаружите, что вам нужно делать такие вещи, вам следует пересмотреть свою методологию, чтобы вам не нужно делать такие вещи.
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
Как предположили другие, это не то, как работает программа Arduino. Он запускает функцию настройки один раз, а затем повторно и навсегда вызывает функцию цикла, пока она не будет отключена или сброшена. Вам придется объяснить, что вы пытаетесь сделать, чтобы мы помогли вам заставить это работать., @Duncan C