Ir ao conteúdo
  • Cadastre-se

Arduino Como enviar e receber strings de valores float em C


Posts recomendados

Olá, glra... estou tentando enviar dados de leitura de alguns sensores em uma string pela serial do arduino para um esp01 ler e "desmontar" para enviar os dados pra web.  Alguém pode me orientar, por favor... sobre como montar e enviar essa string e como converter os valores em float quando chegam no esp? Agradeço.

 

 

 

Link para o comentário
Compartilhar em outros sites

3 minutos atrás, WMAC disse:

@GuilhermeGB  Obrigada por responder. Sim mas fiquei em dúvida em como fazer para "desmontar" essa string com os valores dos sensores quando ela chega ao esp01..

No caso você queria converter novamente para float? A função toFloat() ajudaria?

 

https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/tofloat/

Link para o comentário
Compartilhar em outros sites

1 minuto atrás, WMAC disse:

@GuilhermeGB Sim, mas você sabe como eu poderia fazer isso para vários valores que vão enviados na mesma string e separados por ";", por exemplo?

Desconfiei que estava usando vários valores na mesma string. Uma das formas de fazer essa separação seria com a função for() percorrendo a string até encontrar o próximo ";", e então salvando o que estiver entre cada ";" em outras variáveis antes de fazer a conversão.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

4 minutos atrás, WMAC disse:

@GuilhermeGB  Obrigada, Guilherme. Eu entendi a lógica entretanto não entendo como passar isso pro for.. :( Poderia exemplificar, por favor?

Eu estou meio enferrujado em programação, mas seria algo mais ou menos igual no código de exemplo que fiz abaixo, você precisará testar aí. No caso eu criei uma variável "leitura" com 10 posições, então poderia salvar até 10 valores float diferentes.

 

String string1; //string que você quer ler
String string2; //string auxiliar
float leitura[10]; //onde o valor vai ficar salvo

int j = 0;
int k = 0;
int n = 10; //o tamanho da string que você quer ler

for(int i = 0; i < n; i++) {
  string2[i] = 0; //primeiro zerando todas as posições da string auxiliar para não dar nenhum problema
}

for(int i = 0; i < n; i++) {
  if(string1[i] != ";") {
    string2[j] = string1[i]; //copia os dados da string1 para string2 enquanto não chegar no próximo ";"
    j++;
  }
  else {
    leitura[k] = string2.toFloat(); //salva o valor na posição k da variável leitura
    for(int k = 0; k < i; k++) {
      string2[k] = 0; //zerando a string auxiliar novamente
    }
    j = 0;
    k++;
  }
}

 

Link para o comentário
Compartilhar em outros sites

4 horas atrás, WMAC disse:

@GuilhermeGB Obrigada mesmo! Deu certo aqui! Agora o problema que estou tendo é com a comunicação serial entre o arduino mega e o esp01.. abri outro tópico para ver se consigo alguma ajuda sobre.

Que bom que funcionou, boa sorte no seu projeto.

 

Estava dando uma olhada ali no código e notei um pequeno erro ali dentro do else, onde eu usei "k" de duas formas diferentes e nem tinha percebido. Isso vai acabar dando um problema, então seria bom mudar aquele "k" usado no for() por outra letra.

Link para o comentário
Compartilhar em outros sites

10 horas atrás, kgin disse:

Eu posso está dizendo algo *****, mas não seria melhor converter o numero para uma representação por ponto fixo (fixed point) é mandar como dois bytes pela serial.write()?

 

Se não sabe o que é, de uma olhada nesse site em inglês https://plutiedev.com/fixed-point

 

Acho que é uma ideia viável, principalmente considerando que o ESP01 é um dispositivo bem limitado, e uma variável float ocupa mais espaço na memória que uma variável int.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!