Galera, boa noite. Estou iniciando no arduino, e tenho uma pequena dúvida... Quando eu uso o Serial.read() tenho que OBRIGATORIAMENTE usar uma variável CHAR pra receber o valor lido? Por exemplo, tentei colocar uma variável do tipo String pq teria mais de uma letra mas deu o seguinte erro: 
:error: invalid conversion from 'char' to 'const char*' 
: error: initializing argument 1 of 'unsigned char String::operator==(const char*) const'


Alguém sabe como consigo resolver isso? Pq por exemplo to querendo ler o nome "LIGA" da serial e ligar um led com o comando.
O meu código completo é: 
int branco = 2, verde = 3;
String leitura;

void setup(){
pinMode(branco, OUTPUT);
pinMode(verde, OUTPUT);
Serial.begin(9600);
Serial.write("ATIVADO!\n");
}

void loop(){
leitura = Serial.read(); 

if(leitura == "liga"){
digitalWrite(branco,1);
Serial.println("LIGADO!");
}else if(leitura == 'desliga'){
digitalWrite(branco, 0);
Serial.println("DESLIGADO!");
}

}


Abraços!
 

Exibições: 1522

Responder esta

Respostas a este tópico

Serial.read() te retorna UM caracter cada vez que é chamada.

Existem N modos de resolver isso.

Um jeito que eu acho mais intuitivo seria, se você desejar usar String, com a função String.SetCharAt

Tenta explorar essa função usando um laço de repetição com Serial.available().

Beleza! Valeu! Irei dar uma procurada sobre! Obrigado

if (leitura.compare(0, 4, "liga") == 0)
...
else if (leitura.compare(0, 7, "desliga) == 0)
...

Não funcionou aqui!  Diz que na classe String não tem membro chamado 'compare'... :/

error: 'class String' has no member named 'compare'

Ele também não passou do Serial.read

Sorry, Bruno. Não vi direito e falei besteira.

Dá uma olhadinha nesse tutorial http://labdegaragem.com/profiles/blogs/tutorial-utilizando-strings-...

Tem o exemplo de leitura serial conforme o Jonatas indicou.


Abraço

Pra facilitar... tenta trabalhar com string (vetor de char: char leitura[tamanho]) no lugar de String (objeto).

Pro teu caso acho que será mais fácil.

Assim só terás que usar FOR.

Entendi, mas só mais uma coisa, no vetor devo colocar o maior número que terei de letras, confirma? Tipo liga(4 letras) e desliga(7 letras), devo criar leitura[7]. Depois passo pro for! Valeuu galera!!!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço