avr_libc standard könyvtár
Az avr_libc egy, az Arduino telepítésével együtt installált könyvtár, ami egy egyszerű lib felhívással (#include<stdlib.h>) elérhető. A legtöbb funkciója az Arduino standard hívásokon keresztül is elérhető, de van néhány hasznos, ott meg nem található funkciója is.
Leírása itt található: http://www.nongnu.org/avr-libc/user-manual/group__avr__stdlib.html#g6c140bdd3b9bd740a1490137317caa44
dtostrf()
float / double konvertálása karakter-lánccá, normál formátumban: „[-]d.ddd”.
Szintaktika
dtostrf (value, width, prec, out)
value (float, double): bemeneti érték
width (signed char): egész helyiérték pozíciók száma
prec (unsigned char): törtrész pozíciók száma
out (char*): kimenet
- A törtrészt, ha annak a megjelenítési helye kisebb, mint a számé, kerekíti.
- Az egészrész kezdeti üres pozícióit szóközzel tölti fel.
- Negatív with érték az eredményt balra igazítja, egyébként az igazítás jobbra történik
Példa
#include<stdlib.h> float i = 12345.6789; char buff1[10]; char buff2[10]; char buff3[10]; char buff4[4]; void setup() { Serial.begin(9600); } void loop() { // dtostrf(FLOAT,WIDTH,PRECSISION,BUFFER); dtostrf(i,5,2,buff1); Serial.print("buff1: "); Serial.println(buff1); dtostrf(i,4,0,buff2); Serial.print("buff2: "); Serial.println(buff2); dtostrf(i,2,4,buff3); Serial.print("buff3: "); Serial.println(buff3); dtostrf(i,6,2,buff4); Serial.print("buff4: "); Serial.println(buff4); delay(100000); }
A monitor tartalma:
buff1: 12345.68 buff2: 12346 buff3: 12345.6790 buff4: 12345.68
dtostre()
float / double konvertálása karakter-lánccá, kitevős formátumban: „[-]d.ddde±dd”.
Szintaktika
dtostre (value, out, prec, flag)
value (float, double): bemeneti érték
out (char*): kimenet
prec (unsigned char): törtrész pozíciók száma
flag (unsigned char): egész helyiérték pozíciók száma
Ez a funkció nekem nem működött.
atoi()
Karakter-lánc konvertálása int-té.
Szintaktika
(int) = atoi (char*)
char*: bemeneti karakterlánc
A funkció visszatérési típusa: int. - A karakterlánc egész-részét konvertálja (a tizedespont előtt) - Nem ügyel a túlcsordulásra
Példa
#include<stdlib.h> char buff1[]="12345.67"; int i; void setup() { Serial.begin(9600); } void loop() { i = atoi(buff1); Serial.print(" :"); Serial.println(i); delay(100000); }
A monitor tartalma:
:12345
itoa()
int konvertálása Karakter-lánc-cá.
Szintaktika
itoa(val, char*, radix)
val (int/long): bemeneti int / long
char*: kimeneti karakterlánc
radix: szükséges buffer mérete, 2..36
atof()
Karakter-lánc konvertálása float-tá.
Szintaktika
(float) = atof (char*)
char*: bemeneti karakterlánc
A funkció visszatérési típusa: float - A karakterlánc tartalmát konvertálja (a tizedesértékekkel együtt) - Nem ügyel a túlcsordulásra
Példaként lásd: atoi
atol()
Karakter-lánc konvertálása long-gá.
Szintaktika
(long) = atol (char*)
char*: bemeneti karakterlánc
A funkció visszatérési típusa: long - Nem ügyel a túlcsordulásra
Példaként lásd: atoi