Az adattípusokat különböző változók vagy függvények deklarálására használjuk. A változó típusa határozza meg, hogy mekkora helyet foglal el a memóriában, és hogyan kell kezelni az adott bitek csoportját.
A változókat az alábbi szintaxis szerint vezetjükbe.
type variableName = value;
int ledPin = 3;
Az arduino programban definiált konstansok nem foglalnak el semmilyen program memóriát a chipen. A fordító ezekre az állandókra való hivatkozásokat a fordítás idején megadott értékkel helyettesíti. Ezeket a konstansokat a #define kulcsszóval vezetjük be.
#define constantName value
#define ledPin 3
A const egy változó minősítő kulcsszó, amely módosítja a változó viselkedését, így a változó „csak olvasható” lesz. Ez azt jelenti, hogy a változó ugyanúgy használható, mint bármely más típusú változó, de az értéke nem változtatható meg. A const kulcsszóval definiált konstansok betartják a változó hatókörének szabályait. Ezért előnyösebb a használata mint #define.
const char ledPin = 3;
A függvényben vagy kódblokkban deklarált változók helyi változók. Csak azok a utasítások használhatják, amelyek a függvényben vagy a kódblokkban vannak, kívülről nem érhetők el.
Az alábbi példában a „sum” függvény belsejében deklaráljuk a „myLocalVariable” nevű változót. Ezt a változót csak a „sum” függvény belsejében tudjuk használni. Ezeket helyi vagy lokális változóknak nevezzük.
int sum(int num_1, int nun_2)
{
int myLocalVariable = 0;
myLocalVariable = num_1 + nun_2;
return myLocalVariable;
}
A globális változókat az összes függvényen kívül definiáljuk, általában a program tetején. A globális változó bármely funkcióval elérhető. Vagyis egy globális változó a teljes programban használható a deklarálása után.
A következő példában a „myGlobalVariable” nevű változót a program elején, a függvényeken kívül deklaráltuk. Az így létrehozott változó bárhonnan elérhető, ezért ezeket globális változóknak nevezzük.
int myGlobalVariable = 1;
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.Print(myGlobalVariable);
}
Egyenlőre ennyit a változók létrehozásáról és hatókörükről. Lássuk az adattípusokat.
void
A void kulcsszót csak a függvények deklarálásához használjuk. A void azt jelzi, hogy a függvény várhatóan nem ad vissza információt (nincs visszatérési értéke) ahhoz a függvényhez, ahonnan hívták. Saját függvényt is írhatunk vele, amit csak meghívunk egy másik helyen a kódban. A vázlatunk egyik legfontosabb függvénye is void:
void setup()
{
}
bool
Két értéke lehet: true vagy false. Minden bool változó egy byte-ot foglal el a memóriában.
bool value = false;
bool buttonValue = true;
boolean
A boolean nem standard típus. Használd helyette a bool adattípust.
char
Ez az adat típus egy byte memóriát foglal el, karakter érték tárolására alkalmas, tehát 1 karakter értékét tárolja. A betűket szimmpla idézőjelbe ‘A’, a karakter stringeket dupla idézőjelbe „abc” írjuk. Előjeles adat típus, ez azt jelenti hogy -128 és 127 közötti étékeket tárolhat.
char value = 'A';
char value = "abc";
A karaktereket számként tároljuk, a betűk decimális értéke visszakereshető az ASCII karakter szabványban. Az „A” + 1 értéke 66, mivel az A nagybetű ASCII értéke 65. A Serial.println() parancs segítségével kiirattathatjuk a többi számrendszerben is a soros monitorra.
char value = 'A';
Serial.println(value);
Serial.println(value, DEC);
Serial.println(value, HEX);
Serial.println(value, OCT);
Serial.println(value, BIN);
unsigned char
Ugyanaz, mint az byte adattípus. Egy byte memóriát foglal el. 0 és 255 közötti számokat lehet benne tárolni. Ha lehet használd helyette a byte-ot.
unsigned char myChar = 160;
byte
1 byte-on tárol előjel nélküli számokat, 0 és 255 között.
byte myByte = 25;
int
Elsődleges adattípus a számok tárolásához. Az ATmega alapú táblákon (pl: Arduino Uno) az integer 16 bit (2 byte) értéket tárol, -32 768 és 32 767 között. Aritmetikai operátorokkal a hagyományos módon működnek, de bitenkénti operátorokat is használhatunk velük.
int myInt = 26;
int a = 5; // binary: 0000000000000101
int b = a << 14; // binary: 0100000000000000
unsigned int
Előjel nélküli egész számok tárolására alkalmas. Mivel ugyanúgy 2 byte-on működik mint az integer, nagyobb pozitív értéket tud tárolni: 0 és 65 535 között az ATMega alapú arduinoknál.
unsigned int var = 23;
word
Ugyan az mint az unsigned int. 16 biten tárol előjel nélkül számokat, 0 és 65535 között.
word myWord = 25000;
long
32 biten (4 byte) tárol előjeles számértéket -2 147 483 648 és 2 147 483 647 között. Ha egész számokkal számolunk, akkor az értékek közül legalább az egyiknek hosszúnak kell lennie, vagy egy egész konstansnak, amelyet egy L követ, vagy egy hosszú típusú változónak, amely hosszúra kényszeríti.
long speedOfLight_km_s = 300000L;
unsigned long
Az unsigned long változók kibővített méretű változók a számok tárolásához, és 32 bitet (4 bájt) tárolnak. A szokásos long-al ellentétben az unsigned long nem fog negatív számokat tárolni, így 0 és 4 294 967 295 (2 ^ 32 – 1) tartományba esnek.
unsigned long time = millis();
short
16 bites adat típus, ATMega és ARM alapú Arduinokhoz. Tárolt érték -32 768 és 32 767 között.
short myShort = 10;
float
A float tizedes ponttal rendelkező számokat tátol. A lebegőpontos számok akár 3,4028235E + 38 és akár -3,4028235E + 38 is lehetnek. 32 bit (4 bájt) információként vannak tárolva. A float adattípusban csak 6-7 tizedes számjegy van. Ez az összes számjegyre értendő és nem a tizedespont utáni számjegyekre.
A lebegőpontos számok nem pontosak, és furcsa eredményeket hozhatnak, ha összehasonlítjuk őket. Például a 6.0 / 3.0 nem egyenlő a 2.0-val. Ehelyett ellenőriznie kell, hogy a számok közötti különbség abszolút értéke kisebb-e, mint valami kis szám. Lebegőpontról egész számra történő konvertálás csonkolással eredményezi:
float x = 2.9;
int y = x;
Az y változó eredmény kettő lesz. Kerekítéshez használjuk a round() függvényt:
float x = 2.9;
int y = round(x);
Így az eredmény 3 lesz.
double
Kettős pontosságú lebegőpontos szám. Az Uno és más ATMEGA alapú táblákon ez 4 bájtot foglal el.
double myDouble = 68.665;
string – char array
Létrehozhatunk stringet egy karakterlánc tömbbel. Ezeket az alábbi példák szerint lehet deklarálni, mindegyik érvényes. A karaktertömbök utolsó eleme a 0 (nulla), innen ismeri fel a fordító a string végét. A tömbökről itt bővebben.
char Str1[15];
char Str2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'};
char Str3[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o', 'char Str1[15];
char Str2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'};
char Str3[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o', '\0'};
char Str4[ ] = "arduino";
char Str5[8] = "arduino";
char Str6[15] = "arduino";
'};
char Str4[ ] = "arduino";
char Str5[8] = "arduino";
char Str6[15] = "arduino";
String – object
Szöveg alapú stringeket manipulálhatunk vele. Erről itt bővebben.
array
A tömb egy memóriahely, amelyek azonos típusú elemeket tárol. A tömb adott helyére vagy elemére való hivatkozásként megadjuk a tömb nevét és az adott elem pozíciószámát a tömbben. A tömbökről itt bővebben.
Funduino UNO XXL Tanulókészlet
hirdetés
A következő fejezetben az operátorokról lesz szó.