Boa noite!

Tenho um código que funciona bem para capturar o que se escreve na Serial, através de Serial.Read(), e colocar os caracteres na matrix de LCD.

Agora, já tentei de tudo para fazer uma msg que envio via mqtt, entrar na variável mas sempre dá erro.

Resumindo...

A variável chega no Arduino. Está lá. Consigo visualizar através do Serial.Print, variável.

Como transferi-la para o código abaixo sem dar erro: Sempre dá erro de conversão de char para String. Já tentei definir a variável como Mqtt mas não funcionou!

MUITO OBRIGADO!!!!!!!!!!!!!!!!!!!!!!!!!

CÓDIGO:

Exibições: 169

Anexos

Responder esta

Respostas a este tópico

Olá Marcinhorj

Fica mais fácil para o pessoal analisar seu código se você tirá-lo do corpo do post e colocá-lo como arquivo em anexo.

Veja na barra de ferramentas tem um ícone "Arquivo" para isso.

Grato

Fala José! Valeu pela dica! vou colocar! Obrigado!!

Olá!

Para converter um tipo String para chararray, você pode usar o método toCharArray da classe String.

Ela precisa de um buffer chararray para conversão. Nesse caso, você pode usar a sua própria variável newMessage ou outra variável que quiser.

Fiz um sketch de exemplo usando uma variável de nome newMessage do tipo chararray. No final, esta variável conterá o valor da variável msg do stipo String.

Veja o exemplo anexo:  sketch_oct13a.ino

Compilei aqui e funcionou.

José!!! Muito obrigado!!! No serial.print, ficou perfeito! Mas no display de matrix, somente ficam visíveis as 4 primeiras letras da mensagem, no caso, "Mens...", acompanhado de vários caracteres desconexos. Ainda não entendi esse lance do Buffer, poderia ser isso? De qualquer forma, você já me deu um horizonte!!

Obrigado de verdade!!!

Olá!
Poderia sim ser o buffer, mas se a variável foi exibida corretamente na Serial (e é a mesma da matriz), então provavelmente, não é o buffer o problema.

O buffer, na verdade é apenas um array, um vetor de char.

A variável BUF_SIZE é importante pois ela representa o tamanho desse array. No exemplo que te passei, usei a variável str_len pra isso.

Se esse tamanho não estiver configurado corretamente, a mensagem poderá conter lixo.

Aqui faço assim:

Tudo é String.

Na hora de publicar o MQTT uso:

Nome = "Cliente/Variavel";
Valor= "123";
mqttClient.publish((char*) Nome.c_str(), (char*) Valor.c_str(), true);

Essa linha retorna true ou false conforme sucesso, convém tratar.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço