Olá a todos os amigos,

   Estou em um projeto que envio dados pela serial do arduino, até ai beleza. O problema é que, por exemplo, se eu digito a palavra TA ele reconhece a letra A e executa o comando. Segue a parte do codigo:

if (command == 'A') {
Serial.println("tecla A pressionada");

}

  Se eu colocar uma palavra no lugar da letra, tipo:

if (command == "teste') {
Serial.println("palavra teste digitada");

}

  Se eu envio o comando T a condição if é verdadeira e o comando é executado, se eu envio o comando E a condição if tambem é verdadeira e o comando é executado.

   Como faço para o arduino executar o if somente quando o conjunto inteiro de letras for executado e na ordem correta?

Muitissimo obrigado!

Exibições: 664

Responder esta

Respostas a este tópico

A cada Serial.read você está lendo uma letra/byte.

Faça a leitura utilizando um buffer (vetor de char + laço de repetição).

Converta para String (se achar mais fácil utilizar a classe) e compare.

Olá Moacir,

Experimente a biblioteca Serialcommand disponível no link:

https://github.com/kroimon/Arduino-SerialCommand

O Jonatas respondeu corretamente. Ficaria assim:

while (Serial.available() > 0){
    command += String(char(Serial.read()));
    delay(25);
}

if (command == "teste") {
    Serial.println("palavra teste digitada");

}

Abraços!

Olá Moacir,

Aproveitando o código do Fillipe, experimente esta modificação:

/*
Testa entrada de dados
*/
String command;
int len;
void setup() {
Serial.begin(9600);
Serial.println("Leitura e teste de caracteres");
}
void loop() {
while (Serial.available() > 0){
command += String(char(Serial.read()));
delay(25);
}
command = command.trim();
len = command.length();
// para várias comparações utilizar "Case"
if (command.substring(0,len) == "teste") {
Serial.println("Palavra teste digitada");
}
if (command.substring(0,len) == "T") {
Serial.println("Letra T digitada");
}
command = "";
}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço