Não consigo fazer o comando while parar a repetição

Sou iniciante com o arduino. Estou com dificuldades em fazer o comando while parar a repetição. Posso usar um comando if dentro do while? Alguém pode me ajudar em como fazer isso?

if(MFCS == HIGH & MFCC == HIGH & MStart == HIGH & L == 0 ){
  while(B > 3){
  digitalWrite(dir2,LOW);
  digitalWrite(pul2,HIGH);
  delayMicroseconds(Intervalo2);
  digitalWrite(pul2,LOW);
  delayMicroseconds(Intervalo2);
  
  if (MFCV1 == HIGH){
    B = 2;
   }
  }
  A = 3;
  digitalWrite(ValvulaVacuo, HIGH);
   delay(1000);
   
}`Use esta tag para formatar o código para o fórum`

Olá! para parar qualquer repetição, seja for, do...while, etc... Você vai utilizar o comando "break;" Veja o exemplo abaixo:

void repeticao (int val) {
  while(true){
    val++;
    if(val > 10){
      break;
    }
    delay(100);
  }
}

Fiz o código agora na resposta, então pode haver algum erro de sintax, mas a lógica é essa.

Olhando ao teu código eu vejo uma possibilidade para ele "não funcionar"...

Com esses delays, existe a possibilidade de o que tens "ligado" à variável MFCV1, assumindo que está ligada a um pino ou sensor, mude de estado mas o código não esteja a correr para detectar essa mudança.

O outro problema poderá mesmo ser que a variável B tenha de ser recalculada fora desse while, para a lógica funcionar, mas não o faz e como tal o loop continua a funcionar.

Outro mecanismo que se costuma fazer é mesmo um timeout no loop while para garantir que não prende toda a funcionalidade do sistema.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.