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

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

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.

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

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

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

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