Bom dia
Alguém sabe dizer como eu mostro um valor inteiro com ponto decimal ?
Sei que provavelmente terei que converter primeiro esse inteiro para string, mas como formato ela?
Ex : 2085 mostrar como 208.5 ou 733 mostrar como 73.3 Sempre com 1 casa decimal
Agradeço desde já qualquer ajuda.
Tags:
Bom dia 2C, (se não gosta que te chame pelas iniciais, avise),
qdo solicitar alguma ajuda, descreva com mais informações seu projeto e sua dificuldade.
Por exemplo: " como eu mostro um valor inteiro com ponto decimal ?"
Onde vai mostrar? Serial monitor, LCD navegador, etc.
É usando alguma linguagem ? C, basic, java, etc., ou um Software, Excel, Word, Access, etc...
Está usando algum ucontrolador? Arduino Uno, ESP8266, PIC, etc ..
São muitas possibilidades.
Ajude-nos a ajuda-lo.
RV
É em um Lcd usando a Ide Arduino.
Boa tarde CC,
1. Defina a variável que guarda o numero como float : float minhaVariavel ;
2. Ao enviar para o LCD use o seguinte formato : lcd.print(minhaVariavel,X);
o valor X é a quantidade de casas decimais que vc quer que apareça no LCD depois da virgula.
1 = 1 digito depois da virgula
RV
Você pode fazer a divisão por 10, salvando num float e então gerando uma string com apenas uma casa decimal. Ou fazer isso tudo de uma só vez.
Exemplo:
int valor = 2085;
Serial.println((float)valor/10,1);
Não me recordo se o LCD possui uma função de print que tenha o parâmetro as casas decimais. Se não me engano, tem parâmetro da base do valor (bin, hexa...) Se for o caso, faça a conversão antes para String:
Exemplo:
int valor = 2085;
String valor_str =String((float)valor/10,1);
lcd.print(valor_str );
Boa tarde JV,
a biblioteca LCD do arduino aceita o formato com a quantidade de casas decimais.
Eu uso em alguns projetos.
Ex de um uso que fiz : float voltagem; // Valor calculado da voltagem
......................................
lcd.print(voltagem, 2); // Imprime LCD voltagem
RV
Eu não me recordava desde detalhe...
Então no caso poderia só por: lcd.print((float)valor/10,1)
:D
Grato ao Mineirin RV e ao João Vitor. Resolveu perfeitamente o caso.
Uma questão que preciso também é com relação a guardar em memória um valor utilzando EEPROM.
Eu sempre guardei valores porém inteiros.
Eu consigo guardar por exemplo um valor não inteiro? Ex : 723.4
Eu sei guardar e ler usando EEPROM mas não sei como faria com esse caso.
Alguém tem um exemplo que possa me passar?
Por nada!
Na EEPROM faz-se a gravação de bytes (0 a 255).
Acredito eu que o mais simples seria tratá-lo como um inteiro mesmo, como você disse já fazer. Ao gravar, grave o valor x10. Ao ler, leia e faça a divisão por 10.
No caso de valores maiores que 255, tratar para armazenar em mais de um byte.
Talvez o RV tenha alguma outra sugestão.
2C,
vc pode sim guardar valores maiores do que 1 byte e floats na EEPROM.
use o método EEPROM.put(eeAddress, f); para gravar,
e o método EEPROM.get( eeAddress, f ); para ler, e o que o endereço se forem varias
variáveis, tem se ser acrescido de 4 em 4 bytes.
Lembre-se que "f" tem que ser uma variável do tipo que você quer
gravar e ler, no seu caso do tipo float.
Mas pode ser int, long etc etc.
ref: https://www.arduino.cc/en/Reference/EEPROMPut
https://www.arduino.cc/en/Reference/EEPROMGet
RV
Bom dia
Agradeço ao Mineirin pela dica do armazenamento em eeprom pelo método put e get , eu usava até então write e read, o que limitava muito a operação e muito obrigado também ao João Vitor pela solução via float com a chamada lcd.print((float)valor/10,1)
Resolvido 100%!
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por