Есть ли способ перейти к началу функции void loop() типа ключевого слова "continue" в c in loops?

Я новичок в программировании Arduino и пытаюсь сделать препятствие, избегая автомобиля с ультразвуковым датчиком и дифференциальной моделью водителя. Изучая, как его кодировать, я узнал, что вы можете выйти из функции void loop() с помощью exit(0), чтобы завершить программу, аналогичную break keyword в языке C. Есть ли что-то подобное, что я могу использовать для имитации ключевого слова "continue", скажем, если я не хочу запускать код после определенной строки в функции void loop ().

, 👍1

Обсуждение

Если вы "возвращаетесь" из функции " цикл (), вы немедленно завершаете выполнение текущей итерации. Затем функция ' loop() запустится снова, так как она всегда зацикливается (для именования). loop () - это такая же функция, как и любая другая. Он просто вызывается снова и снова в бесконечном цикле., @chrisl

Использование "return;", как если бы это была обычная функция, казалось, работало. Сначала я подумал, что return будет делать то же самое, что и exit(0). Большое вам спасибо @chrisl., @shyam

Я думаю, что an'exit(0) просто приведет к бесконечному циклу,который ничего не делает. На микроконтроллере в любое время должен быть запущен код. Он не может вернуть управление операционной системе., @chrisl

да, я слышал, что использование exit(0) - плохая практика программирования на Arduino., @shyam


1 ответ


1

В функции loop() функция return будет выполнять эту функцию. Выходя из функции, цикл for() в main() (которого мы не видим) будет повторяться снова, вызывая loop() снова.

Другой способ сделать то же самое-написать все в вашей функции setup (), включая любой вид цикла, который вы хотите построить, и использовать инструкции break; and continue;, как вы привыкли:

void setup(){
   // pinMode() & digitalWrite() calls
   // Инициализируйте последовательный порт, если вам нужно
   // Любая другая одноразовая настройка
   //
   // Здесь все происходит:
   for( .... ){
      // содержание цикла здесь
      if( whatever ){
         continue;
      }
      else if( something_else ){
         break;
      }
   }
}

// Это просто останавливается навсегда, когда setup() заканчивается:
void loop(){
   ;
}
,