EasyManuals Logo

Arduino uno User Manual

Arduino uno
311 pages
To Next Page IconTo Next Page
To Next Page IconTo Next Page
To Previous Page IconTo Previous Page
To Previous Page IconTo Previous Page
Page #104 background imageLoading...
Page #104 background image
them automatically to two decimal digits. The secret lies in the
print
method
of the
Serial
class. In recent versions of the Arduino platform, it works for all
possible data types, and when it receives a
float
variable, it rounds it to two
decimal digits before it gets output. You can specify the number of decimal
digits. For example,
Serial.println(3.141592, 4);
prints
3.1416
.
Only the output is affected by this; internally it is still a
float
variable. By the
way, on most Arduinos,
float
and
double
values are the same at the moment.
Only on the Arduino Due is
double
more accurate than
float
.
So, what does it actually cost to use
float
variables? Their memory consumption
is 4 bytesthat is, they consume as much memory as
long
variables. On the
other hand, floating-point calculations are fairly expensive and should be
avoided in time-critical parts of your software. The biggest costs are the
additional library functions that have to be linked to your program for
float
support.
Serial.print(3.14)
might look harmless, but it increases your programs
size tremendously.
Comment line 37 out and recompile the program to see the effect. It will no
longer work properly, but we can see how this statement affects the program
size. With my current setup, it needs 3,002 bytes without
float
support for
Serial.print
and 5,070 bytes otherwise. Thats a difference of 2,068 bytes!
In some cases, you can still get the best of both worlds:
float
support without
paying the memory tax. You can save a lot of space by converting the
float
values to integers before sending them over a serial connection. To transfer
values with a precision of two digits, multiply them by 100, and dont forget
to divide them by 100 on the receiving side. Well use this trick (including
rounding) later.
Increasing Precision Using a Temperature Sensor
Support for floating-point numbers is an improvement, but it mainly
increases the precision of our programs output. We couldve achieved a
similar effect using some integer math tricks. But now well add an even better
improvement that cannot be imitated using software: a temperature sensor.
When I told you that sound travels through air at 343 m/s, I wasnt totally
accurate, because the speed of sound isnt constantamong other things, it
depends on the airs temperature. If you dont take temperature into account,
the error can grow up to a quite significant 12 percent. We calculate the
actual speed of sound C with a simple formula:
C = 331.5 + (0.6 * t)
Chapter 5. Sensing the World Around Us 86
report erratum discuss
www.it-ebooks.info

Table of Contents

Other manuals for Arduino uno

Questions and Answers:

Question and Answer IconNeed help?

Do you have a question about the Arduino uno and is the answer not in the manual?

Arduino uno Specifications

General IconGeneral
Form factorArduino
CertificationRoHS, FC, CE
Processor model-
Processor frequency- MHz
Microcontroller modelATmega328
Microcontroller frequency16 MHz
DC input voltage7-12 V
Operating voltage5 V
DC current per I/O pin40 mA
Flash memory0.032 MB
Maximum internal memory- GB
SRAM (Static Random Access Memory)2 KB
EEPROM (Electrically Erasable Programmable Read-Only Memory)1 KB
Wi-FiNo
Number of analog I/O pins6
Number of digital I/O pins14
Weight and Dimensions IconWeight and Dimensions
Board dimensions53.4 x 68.6 mm

Related product manuals