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:
Tags:
As respostas para este tópico estão encerradas.
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
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por