Sair do while no arduino com outra variavel de entrada

Boa tarde Garagistas, estou com um programa onde uso um controle infra vermelho para movimenta um motor de passo, e entre esse sensores há um intertravamento.

Há uma variavel que conta quantas vezes eu apertei o controle, onde uso  a condição switch case.

Mas quando esto no case1:

Não consigo sair da condição while, quando aperto o controle remoto.

Ou seja, quando eu aperta o controle remoto e estiver na condição while preciso sair deste case 1: e ir para case 2:

Peço a ajuda de vocês pois ja me ajudaram muito em problemas anteriores.

segue sketch:

Exibições: 309

Anexos

As respostas para este tópico estão encerradas.

Respostas a este tópico

Cara, você não consegue sair porque o código fica preso no while, o mesmo não passa novamente pela rotina de leitura do IR, não entendi bem o que você está tentando fazer, portanto não posso ajudar muito, mas acho que essa não é maneira correta de resolver a sua situação.
Mas siga uma sugestão (não é legal, mas resolve), crie uma função para ficar lendo o status do IR e dentro dos whiles você fica chamando a cada interação. Ex:

void verificaBreak(int codigo) {

   if (irrecv.decode(&results)) {
      irrecv.resume();
      if (results.value == codigo) {
         return true;
      }
   }
   return false;
}

Como usar dentro do while:


if (verificaBreak(876545)) {

   break;

}

Lembre-se que não testei esses códigos, é apenas dica de lógica

Bom dia Eduardo, gostei muito da sua dica e irei coloca-la em pratica, lhe agradeço imensamente.

Só para você entender, o meu motor de passo se movimenta em uma esteira. qquando ele chega ao final da esteira , ele aciona dois sensores, um que o faz girar 90° e o outro o impede de sair de sua posição; ou seja, se alguem tentar girar o motor com a mão, ele volta para sua posição atual.

é nessa hora que ele esta no while.

Só que quando a pessoa apertar o controle novamente, devo sair deste laço e a esteira vai para a posição inicial 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço