Go Down

Topic: comando serial.println (Read 909 times) previous topic - next topic

EdY++


Olá pessoal,

Necessito manter 2 casas decimais após a virgula com o comando serial.print, acontece que no arduino não consigo achar nada que possibilite esta ação, ja tentei comando como serial na familia IDE para PIC (%f0.00 , se não me engano) mais não funciona,

HugoPT

#1
Nov 07, 2013, 06:20 pm Last Edit: Nov 07, 2013, 06:22 pm by HugoPT Reason: 1
Quote
println()
Description

Prints data to the serial port as human-readable ASCII text followed by a carriage return character (ASCII 13, or '\r') and a newline character (ASCII 10, or '\n'). This command takes the same forms as Serial.print().
Syntax

Serial.println(val)
Serial.println(val, format)
Parameters

val: the value to print - any data type

format: specifies the number base (for integral data types) or number of decimal places (for floating point types)


Code: [Select]

float  minhaVar = 1.2f;

void setup()
{
 Serial.begin(9600);
}

void loop()
{
   Serial.print("O valor e: ");
   Serial.println(minhaVar,2); // imprime duas casas decimais
   delay(1000);
}


Passa tambem os olhos pela funçao sprintf ...
Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B

EdY++

Obrigado pela resposta,
Mais não compreendi o porque do float  1.2f;
seria a mesma coisa de %f0.00 (2 casas decimal)

att.

LegendBR

1.2f é a forma que a linguagem C de programação define número do tipo float. Se fosse simplesmente 1.2 o número seria considerado um double (o dobro de memória do float).

Essa forma de imprimir utilizando o %f0.00 não se aplica no Arduino. Você deve estar confundindo com o printf, que tem uma sintaxe parecida com isso que você quer fazer. No Arduino, o mais utilizado é o Serial.print/println, como o Hugo falou acima.

EdY++

#4
Nov 07, 2013, 07:43 pm Last Edit: Nov 07, 2013, 07:49 pm by EdY++ Reason: 1
Opa, ok..

so aproveitando o tropico, como consigo enviar um valor de uma varialvel pela serial dos arduino, necessito montar uma matriz ???
Pretendo enviar um valor de um sensor de temperatura LM35. que manda uma valor de por exemplo 30.

HugoPT

Quote
Se fosse simplesmente 1.2 o número seria considerado um double (o dobro de memória do float).

Um double e um float ambos ocupam 4 bytes de RAM

Quote

DOUBLE
Double precision floating point number. On the Uno and other ATMEGA based boards, this occupies 4 bytes. That is, the double implementation is exactly the same as the float, with no gain in precision.

FLOAT
Datatype for floating-point numbers, a number that has a decimal point. Floating-point numbers are often used to approximate analog and continuous values because they have greater resolution than integers. Floating-point numbers can be as large as 3.4028235E+38 and as low as -3.4028235E+38. They are stored as 32 bits (4 bytes) of information.


Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B

LegendBR

Disso eu não sabia. double é o mesmo float.

Go Up