Boa tarde pessoal, gostaria de saber se é possível interromper um laço for ou while através de um comando pela serial... Por exemplo:
Char comando = Serial.read ();
While (comando ==a)
{
// instruções 1
}
While (comando == b)
{
// instruções 2
}
Quando eu aperto "a" no teclado, as instruções 1 são executadas infinitamente e eu gostaria de interromper essas instruções com um comando "b" e consequentemente executar as instruções 2.
Tags:
E se tu ler o comando dentro do laço? Um valor que não satisfaça mais a condição da repetição;
Não consigo ler nenhum comando dentro do laço =/
Quando aperto o comando "a", o primeiro laço é executado e depois disso não consigo ler mais nenhum comando
char comando;
if (Serial.available() > 0) {
comando = Serial.read();
}
while (comando == 'a') {
//instruções
if (Serial.available() > 0) {
comando = Serial.read(); //lê dentro do while;
}
if(comando != 'a') {
break;
}
}
Obs: Desta forma só tem o porém de não executar mais nada enquanto estiver nesse while.
Kra já passei por isso... O fato é que quando vc usa o while ele executa enquanto a condição for verdadeira e ele não sai de lá nunca mais... sempre que usar o while termine com o (break;), ele faz com que a condição teste novamente, funcionando quase como um (if).
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if (Serial.available()) //se byte pronto para leitura
{
switch (Serial.read()) //verifica qual caracter recebido
{
case 'a': // caso for o caracter a
// faça isso
break; // saia da condição para testar novamente
case 'u': // caso for o caracter u
// faça aquilo
break; // saia da condição para testar novamente
// pode colocar quantos caracteres quiser, desde que todos terminem com o "break;" para retornar.
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Ei pessoal, funcionou com o break!!!
Eu já tinha usado o break antes mas de forma errada, não tinha dado certo... mas agora fiz do jeito que vos disseram e funcionou!!
Muito obrigado pela ajuda!!
Desculpa, eu estava sonolenta ontem, na realidade não é necessário o break. Tu precisa somente realizar a leitura dentro do while e atribuir a "comando". Quando o valor não for mais "a", ele não entra mais no while.
Até onde eu sei, "sempre que usar o while termine com o (break)" dito pelo colega não é uma verdade absoluta. Outra coisa, "ele faz com que a condição teste novamente" também não é.
O que acontece é que o break encerra a execução da instrução delimitadora, nesse caso o while, mais próxima. O controle passa para a instrução que segue a instrução encerrada, nesse caso ele segue as próximas instruções e volta a checar a condição do while.
Entendi... muito obrigado pela ajuda Amanda!! ;)
É verdade Amanda, pesquisei sobre o while e descobri muita utilidade para ele, obrigado pela resposta. Não se pode colocar o break no final do while pelo fato que ele vai sair da condiçao para testar novamente, funcionando como um IF. Mais uma vez obrigado...
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por