como usar sprintf com valores do tipo float

Olá,

Este assunto referente a funções de C serve apenas de consulta, um auxiliar de memoria que facilita a escrita de código AVR Studio.

Começo por abordar uma função muito útil:

– sprintf

Esta função é muito versátil e poderá funcionar em alternativa a itoa e a dtostrf.

Este auxiliar de memoria é fundamental porque a função sprintf esta exaustivamente explicada na web, no entanto quando tentamos usar AVR STUDIO 6.2 existe um pequeno ajuste a fazer para que se leia valores do tipo float ( ex: 12.80 ).

A função a usar é muito simples por exemplo para ler um sensor poderemos usar o valor do sensor e depois formatar o texto que pretendemos que seja apresentado na USART ou no LCD.

sprintf(String,”texto formatado %tipo_de_valor”,Valor), vejamos sprintf(buf,”TEMP=%0.2lf”,dallas); significa que na char buf[10],irá gravar o texto “TEMP=” com o valor formatado que neste caso é do tipo longfloat=double devolvido pela variável dallas, podem ver este código aqui.

 

Ora não fazia sentido escrever apenas isto, o importante é que no AVR Studio 6.2 não aparece o valor do tipo float, para isso teremos de proceder a 3 passo:

  1. Selecionar bibliotecas do tipo Float.
  2. Selecionar ALT+F7 ou então MENU->Project->Properties ou então selecionar o chip usado.
  3. No AVR/GNU Linker->General colocar um visto em use vprintf library.

 

Conforme exemplo da imagem, abaixo.

Bom isto serve para sempre que aparece um sinal de ? no valor que estamos a ler do sprintf significa que ou não esta bem formatado ou então, se for tipo float este não esta com as bibliotecas activadas.

 

2 comentários

  1. Um tema muito interessante que me ajudou imenso.
    só tenho um reparo, o link que sugere o código não vai dar a lado nenhum 🙁

  2. Link corrigido 🙂

Responder a norlinux Cancelar resposta

Your email address will not be published.

www.000webhost.com