Premenné sú pamäťové miesta prístupné prostredníctvom identifikátoru. Hodnotu premenných môžeme počas výpočtu meniť. Tým sa premenné zásadne odlišujú od konštánt, ktoré majú po celú dobu chodu programu hodnotu nemennú – konštantnú. Premenné deklarujeme uvedením dátového typu, ktorý je nasledovaný identifikátorom alebo zoznamom identifikátorov navzájom oddelených čiarkami. Deklarácia končí bodkočiarkou. Súčasne s deklaráciou premennej môžeme, ale nemusíme, definovať aj jej počiatočnú hodnotu.
Celočíselné dátové typy môžu obsahovať modifikátory unsigned respektíve signed, čím môžeme požadovať hodnoty príslušného typu bez znamienka, resp. so znamienkom (Tento variant je často používaný pri type char, kde môže byť zdôraznený ako signed char,).
Dátový typ void je použitý iba v deklarácii funkcie. To znamená, že od funkcie sa neočakávajú žiadne návratové informácie.
// program je vykonávaný vo funkcii "setup" a "loop", ale funkcia žiadne hodnoty nevráti void setup() { // ... } void loop() { // ... }
je implementáciou pravdivostného typu. Môže obsahovať dve možné hodnoty (logické konštanty) true pravda a false nepravda, ktorým tiež prislúcha určitý rozsah číselných hodnôt, väčšinou false = 0 a true >= 1.
boolean b = false;
Tieto premenné sa hojne využívajú pre vyhodnocovanie najrôznejších podmienok a budeme sa s nimi často stretávať.
Pre uloženie jednotlivých znakov do pamäti sa používajú premenné typu char. Veľkosť typu char je 1 byte, čo znamená, že môžete použiť 255 znakov. Každý znak je uzavretý medzi dvomi apostrofmi (napr. ‘C’). Všetky znaky sú navzájom usporiadané v tzv. ASCII tabuľke – táto obsahuje 256 znakov.
char myChar = 'A'; char myChar = 65; // obe varianty sú si ekvivalentné unsigned char myChar = 240;
Znaky sú uložené v premennej myChar ako čísla určené podľa kódovania v ASCII tabuľke. To znamená, že je možné vykonávať aj aritmetické operácie na znakoch napr. ‘A’ + 1 má hodnotu 66, pretože hodnota ASCII veľkého písmena A je 65. Taktiež je možné znak definovať nielen v desiatkovej sústave číslom 65 ale aj v šetnástkovej sústave číslom 0x41, prípadne aj binárnym zápisom.
Dátový typ char je typ signed, čo znamená, že kóduje čísla od -128 do 127. Dátový typ unsigned char kóduje čísla od 0 do 255, čo je vlastne dátový typ byte.
Dátový typ byte ukladá 8-bitové číslo od 0 do 255, to je vlastne jeden byte.
byte b = B10010; // "B" je binárny formát (B10010 = 18 desiatkovo) byte x = 128;
Označuje sa aj ako uint8_t.
Jeden z najpoužívanejších dátových typov int (od slova integer – celé číslo) môže nadobúdať hodnoty 16-bitové (2 bajty) alebo 32-bitové (4 bajty) a to podľa typu použitého procesoru – napr.: Arduino Uno (a ostatné ATMega dosky s 8-bitovými procesormi) majú hodnoty int ako 16-bitové a Arduino Due (s 32-bitovým procesorom) používa hodnotu int ako 32-bitové číslo. Na toto treba myslieť pri tvorbe programu, ktorý môže bežať na rôznych platformách.
int x = 13; unsigned int ledPin = 13;
Dátový typ int ukladá 16-bitové číslo od -32.768 do 32.767 (int16_t) a 32-bitové číslo od 2.147.483.648 do 2.147.483.647 (int32_t). Dátový typ unsigned int ukladá 16-bitové číslo od 0 do 65.535 (uint16_t) a 32-bitové číslo od 0 do 4.294.967.295 (uint32_t).
Na doskách Uno (a ostatných ATMEGA) je dátový typ word uložený ako 16-bitové číslo. Na doskách Due a Zero (32-bit procesor) je uložené ako 32-bitové unsigned číslo.
word w = 10000;
Výsledok je ten istý ako unsigned int, len zápis word je kratší na počet písmen.
Dátový typ long je dlhé celé číslo a ukladá 32 bitové čísla (4 bajty) od -2.147.483.648 do 2.147.483.647 a dátový typ unsigned long ukladá 32 bitové čísla od 0 do 4.294.967.295
long x = 45789; unsigned long time;
Dátový typ short je celé 16-bitové číslo (2 bajty) v rozsahu od -32.768 do 32.767.
short ledPin = 13;
Všetky Arduina (ATMega aj ARM) ukladajú typ short ako 16-bitové číslo.
Pre lepšiu predstavu dáva nasledujúca tabuľka prehľad niektorých vlastností dátových typov pre celé čísla:
typ bitov rozsah zápis int8_t 8 -128 - 127 char int16_t 16 -32.768 - 32.767 short, int* int32_t 32 -2.147.483.648 - 2.147.483.647 long, int** uint8_t 8 0 - 255 byte, unsigned char uint16_t 16 0 - 65535 word*, unsigned int* uint32_t 32 0 - 4,294,967,295 unsigned long, word**, unsigned int** * pre 8-bitový procesor (Arduino Uno, ATMEGA, ...) ** pre 32-bitový procesor (Arduino Due, Zero, ...)
Typ premennej float je určený pre reálne čísla s desatinnou čiarkou v rozsahu od -3.4028235E+38 do 3.4028235E+38. Alokácia premennej float vyžaduje 32-bitov (4 bajty). Pre predstavu, rozloženie premennej môže vyzerať takto: 24 bitov je určené pre mantisu a 8 bitov pre exponent.
float teplota; float sensor = 1.117;
Vzhľadom na to, že dátový typ float je zložený z dvoch častí, ktoré nesú informáciu o skutočnej hodnote reálneho čísla, môže nastať situácia, že výpočet bude mimo rozsah a vtedy nastane nedefinovateľná modifikácia jednej z častí (mantisa, exponent) a výsledok bude špatný. Všetko sa žiaľ stane bez informácie o presahu povolených medzí. Treba myslieť na to, že čísla s plávajúcou desatinnou čiarkou nie sú presné a môžu priniesť podivné výsledky pri porovnaní. Napríklad 6.0 / 3.0 nemusí sa rovnať 2.0. Taktiež výpočet s plávajúcou čiarkou je oveľa pomalší ako výpočet s celým číslom.
int x; int y; float z; x = 1; y = x / 2; // y má hodnotu 0, lebo je typu celé číslo z = (float)x / 2.0; // z teraz obsahuje .5 (treba použiť 2.0 a nie 2)
Desatinné čísla sa píšu s bodkou a nie s čiarkou ako sme zvyknutí.
je racionálne číslo s dvojitou presnosťou. Opäť pozor na to, že na doskách Uno (a ostatné ATmega) zaberá hodnota 32-bitov (4 bajty), to je ako použitie float (tu už strácame dvojitú presnosť), ale na doskách Arduino Due (32-bit procesor) zaberá hodnota double 64-bitov (8 bajtov).
V programovacích jazykoch sa ešte používa aj long double čo je reálne číslo najväčšie (má veľkosť 80-bitov).
Pre lepšiu predstavu dáva nasledujúca tabuľka prehľad niektorých vlastností racionálnych dátových typov:
typ bitov mantisa exponent rozsah absolútnych hodnôt (približne) float 32 24 8 3.4 10-38 až 3.4 10+38 double 64 53 11 1.7 10-308 až 1.7 10+308 long double 80 64 15 3.4 10-4932 až 1.1 10+4932
Presne definuje racionálne dátové typy norma IEEE 754.
Reťazec znakov (string) je zvláštnym druhom jednorozmerného poľa. Sú zložené z prvkov typu char. Reťazce sú základom textových a databázových súborov. Reťazcové konštanty zapisujeme v programe ako postupnosť znakov uzavretých medzi úvodzovkami. V pamäti je reťazec ukončený znakom ‘\0’, ale pri vypisovaní to nepoznať, lebo tento znak je “neviditeľný” a nemusíme ho zapisovať. Naopak, v prípade, že omylom zmažeme tento znak, programy pracujúce s reťazcom dovtedy budú hľadať koniec reťazca pokiaľ náhodne nenarazia na najbližší znak ‘\0′.
Možnosti pre deklarovanie reťazca arduino v poli Str[]:
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";
Počet prvkov poľa sa určuje pri deklarácií. Údaj o počte prvkov je možné v deklarácií vynechať (ak je pole definované inde) alebo v definícií (kde inicializujeme všetky prvky). Pri definícii je možné pole zároveň aj inicializovať. V tom prípade nasleduje za menom poľa a hranatými zátvorkami znak rovnosti a za ním v zložených zátvorkách hodnoty, ktoré sa majú priradiť jednotlivým prvkom. V prípade stringov nahradia zložené zátvorky dvojité úvodzovky. Za platnými znakmi string sa automaticky doplní o koncový znak ‘\0’. Pozor na číslo v hranatých zátvorkách. Koncový znak musí byť súčasťou stringu (započítava sa!).
Ak nezadáme údaj o rozmere poľa, určí si ho prekladač na základe počtu platných prvkov uvedených pri inicializácii. V prípade reťazca znakov rozmer poľa sa nastaví na počet platných znakov +1 (ukončovací ‘\0’) naviac. V prípade poľa znakov obsahujúceho kratší string než je dĺžka poľa (t.j. za hodnotou ‘\0’ do konca poľa budú voľné pozície) bude až do konca poľa obsahovať náhodné údaje.
Trieda String umožňuje používať a manipulovať s reťazcami textu zložitejšími spôsobmi ako znakové pole. Môžete reťazce spájať, vyhľadávať, nahrádzať a podobne. To si vyžaduje viac pamäte ako jednoduché pole znakov, ale je to tiež užitočné. Pre porovnanie, znakové pole je označované ako reťazce s malým písmenom s (string) a inštancia triedy String je označovaná s veľkým písmenom S (String). Všimnite si, že konštanta reťazca špecifikovaná v “úvodzovkách” sa považuje za Char pole a nie za inštanciu triedy String.
pole… Nejedná sa o poľnohospodárske pole, ale chcelo by to preklad do našej reči napr. z webu arduino.cc a tu je tvoja príležitosť pomôcť, za čo budú vďačný určite i ďalší čitatelia.
Tento text je preložený a upravený zo stránok arduino.cc pod licenciou Creative Commons Attribution-ShareAlike 3.0.
Arduino [čítaj Arduíno] je v informatike názov malého jedno-doskového počítača založeného na mikrokontroléri ATmega od firmy Atmel. Svojim návrhom sa snaží podporiť výučbu informatiky v školách a oboznámiť študentov s tým, ako sú pomocou počítačov riadené rôzne zariadenia ...
Čo by si mal vedieť pri zapájaní Arduina a jeho pinov? Určite aspoň to, ako nezničiť Arduino. Nasledujúci súpis zverejňujem preto, aby si sa popísaným chybám mohol vyhnúť. Jedná sa skôr o elektronické...
Knižnice určené pre Arduino sú priečinky (adresáre), ktoré združujú viac súborov so zdrojovými kódmi. Vďaka týmto zdrojovým kódom máme potom jednoduchší a prehľadnejší vlastný program, keď chceme pripojiť nejaký zložitejší modul, senzor, displej a podobne. Napríklad pri stiahnutí programovacieho ...