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!
Tags:
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:
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 = "";
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por