Arduino a Typy premenných

byte je najmenší dátový typ Arduina, ktorý môžete použiť pre okrúhle čísla pri programovaní s Arduino. Bajt obsahuje 8 bitov. Bit je jednoducho binárna informácia:

0 alebo 1.

Takže bajt bude obsahovať 8 binárnych hodnôt. Napríklad číslo 45 zapísané 8-bitom bude vyzerať takto: 00101101. Takto bude bajt uložený v Arduine. Vo svojom programe si môžete vybrať, či použijete binárne vyjadrenie čísla alebo desiatkové vyjadrenie (funguje aj hexadecimálne).

A môžete vytlačiť číslo pomocou funkcie Serial.println() s použitím rôznych argumentov pre rôzne reprezentácie čísla.

výsledok v sériovom monitore:

Minimálna hodnota pre bajt je 0 a maximálna hodnota je 255. Ako vidíte, je to dosť málo, takže pri používaní tohto typu údajov buďte opatrní. Používajte ho len na ukladanie veľmi malých čísel. A čo sa stane, ak sa pokúsite uložiť číslo menšie ako 0 alebo väčšie ako 255? Program bude stále fungovať, ale vaša premenná sa preplní. Pretečenie znamená, že keď hodnota dosiahne 256, vráti sa späť na 0.

Takže, ak sa pokúsite priradiť 260 k bajtu:

Tak získate:

260 sa zmenilo na 4, pretože 256 sa vráti na 0, potom 257 sa zmení na 1 atď… a z 260 sa stane 4. Takže opäť dávajte pozor pri používaní malých dátových typov, ako je bajt vo vašich programoch Arduino:

ak sa pokúsite použiť príliš veľké číslo, premenná pretečie a jej hodnota nebude správna. Váš program sa bude dať stále skompilovať, ale pri spustení sa vyskytnú všetky druhy chýb aplikácie.

Int alebo celé číslo je jedným z najbežnejších typov premenných, s ktorými sa budete stretávať. Int je okrúhle číslo, ktoré môže byť kladné alebo záporné. Na doskách Arduino, ako sú Uno, Nano a Mega, int ukladá 2 bajty informácií. Takže napríklad 9999 bude reprezentované 00100111 00001111. Hoci nepotrebujete poznať binárne vyjadrenie, môžete pracovať iba s desatinnými číslami.

Int môžete použiť všade na uloženie akýchkoľvek informácií reprezentovaných okrúhlym číslom. Napríklad: počítadlo, teplota, počet krokov pre krokový motor, uhol pre servomotor atď.

Minimálna hodnota pre 2-bajtový int je -32 768 a maximálna hodnota je +32 767. Čo sa týka bajtov, môže pretekať. Napríklad, ak sa pokúsite priradiť 32 768 (čo je tesne nad maximálnym limitom), hodnota, ktorú prečítate vo vnútri premennej, bude -32 768. A ak sa pokúsite priradiť -32 769, dostanete +32 767. Preto dávajte pozor, aby ste pri int nepoužívali príliš veľké čísla. Na doskách, ako sú Arduino Due a Zero, celé čísla ukladajú 4 bajty, takže rozsah hodnôt je oveľa vyšší: -2 147 483 648 až 2 147 483 647. Ale na klasických Arduino doskách (Uno, Nano, Mega atď.), Ak chcete použiť väčšie celé čísla, budete musieť použiť long namiesto int.

A long je presne to isté ako int, ale používa 4 bajty.

Minimálna hodnota bude -2 147 483 648 a maximálna hodnota 2 147 483 647. Vďaka tomu sa nemusíte príliš obávať preplnenia.

Pre štandardné premenné s okrúhlym číslom môžete pred typ údajov pridať „unsigned“. Ak pridáte „unsigned“, premenná bude obsahovať iba kladné čísla, začínajúce od 0. To je to, čo sme mali pre bajt, čo je už unsigned dátový typ.

Ak chcete vytvoriť unsigned int:

unsigned int bude začínať na 0 a bude mať maximálnu hodnotu 65 535 (4 294 967 295 v 4-bajtovej tabuli, ako napríklad Due/Zero). Keďže už nemáte záporné čísla, všetky tieto čísla sa pripočítajú k maximálnej kladnej hodnote, ktorú môžete použiť. Koncept pretečenia je tu rovnaký. Ak sa pokúsite použiť 65 536, vrátite sa na 0. Takže unsigned int možno použiť, ak ste si istí, že pre premennú uložíte iba kladné čísla. Zvýši sa aj maximálny limit, takže ak napríklad musíte na čítanie snímača použiť premennú od 0 do 50 000, bude to dobrá voľba.

Ak chcete vytvoriť unsigned long:

unsigned long bude začínať na 0 a bude mať maximálnu hodnotu 4 294 967 295, čo je veľmi veľké číslo. Opäť platí, že použitie, je veľmi podobné typu údajov int, len pre väčšie čísla. Na Arduine, keď sa pokúsite získať čas pomocou milis() alebo mikros(), dostanete výsledok v unsigned long.

Bool/boolean je konkrétny dátový typ Arduina, ktorý obsahuje iba binárne informácie: 1 alebo 0 (pravda alebo nepravda).

Booleany použijete na testovanie podmienok, kde je odpoveď jednoduché áno/nie.

V Arduine môžete použiť štandardný typ bool C++ alebo typ boolean, ktorý je identický. Dokumentácia k Arduinu však naznačuje, že používate iba bool.

Zatiaľ sme videli iba to, ako ukladať a používať okrúhle čísla s Arduino. Ale čo ak chcete uložiť číslo ako 3,14?

Premenná float môže uložiť záporné alebo kladné číslo float. Ako každý typ údajov má minimum a maximum: 3,4028235E+38 až -3,4028235E+38. Toto je oveľa väčšie ako long, aj keď float je tiež uložený na 4 bajtoch. Dôvodom je jednoducho to, že oba typy údajov sú uložené iným spôsobom.

Ak chcete vytvoriť float:

Takže rozlíšenie floaf je väčšie ako okrúhle čísla, čo ich robí vhodnými pre niektoré výpočty alebo čítanie spojitej hodnoty zo senzora. Všimnite si však, že presnosť pre float nie je 100%, na rozdiel od dátových typov okrúhlych čísel. Napríklad, ak sa pokúsite priradiť 3,00 v rámci pohyblivého čísla, skutočná hodnota môže byť niečo ako 3,0000001.

V doskách ako Uno, Mega a Nano sú double a float identické. Napríklad na Due je dvojnásobok uložený na 8 bajtoch namiesto 4, čím sa líši. Môžete uložiť aj väčšie čísla. Jedna vec, ktorú by ste mali vedieť o číslach s pohyblivými číslami (typ údajov float alebo double): mikrokontroléru Arduino zaberie oveľa viac času na spracovanie výpočtu s pohyblivými číslami ako s okrúhlymi číslami. Keďže výpočtový výkon je veľmi obmedzený, snažte sa čo najviac používať okrúhle čísla a čísla float, double len vtedy, keď nemáte na výber.

Skvelé, teraz ste videli, ako ukladať boolovské, zaokrúhľovacie a pohyblivé čísla. Poslednou dôležitou kategóriou je spôsob ukladania textu, ktorý sa často používa, keď chcete zdieľať informácie s používateľom (text má pre človeka väčší zmysel ako hexadecimálny kód) alebo napríklad komunikovať v ASCII.

Typ údajov char je dosť špecifický, pretože sa používa hlavne na ukladanie písmen, ale nakoniec je skutočná hodnota číslo medzi -128 a +127 (uložené v 1 byte). Zodpovedajúce hodnoty medzi písmenom a číslicami sú tie, ktoré nájdete v tabuľke ASCII.

Napríklad veľké písmeno „F“ má hodnotu 70 a malé písmeno „f“ má hodnotu 102.

Výpočty môžete vykonávať pomocou char. Ak k písmenu „F“ pridáte +1, číslo sa zmení na 71 a zodpovedajúce písmeno „G“ bude veľké. Typ údajov char môže byť celkom užitočný na odosielanie údajov cez Serial/I2C/SPI medzi zariadeniami. Nezaberá veľa miesta (1 bajt, čo je minimum), takže je rýchlejší na prenos a akciu môžete priamo priradiť k písmenu – napr.: „m“ na pohyb motora, „s“ na zastavenie, „ a’ na zrýchlenie atď.

Dátový typ unsigned char je v skutočnosti úplne rovnaký ako typ bajtovej premennej. Obe majú minimálnu hodnotu 0 a maximálnu 255. Odporúča sa použiť bajt namiesto znaku bez znamienka.

Dátový typ String je špecifický pre Arduino, nenájdete ho v štandardnom C/C++. Všimnite si tiež veľké písmeno „S“. Typ premennej je String, nie reťazec. Tento typ použijete na ukladanie textu. Operácie, ako napríklad zreťazenie, môžete vykonávať priamo pomocou operátora „+“.

String je trieda, nie je to dátový typ. Ak chcete vytvoriť reťazec, musíte použiť pole znakov. S triedou String si zjednodušíte život a máte aj kopu funkcií navyše.

A samozrejme, každý z typov údajov Arduino, ktoré ste tu videli, môže byť uložený v poli. Uistite sa, že používate iba jeden typ údajov pre všetky prvky poľa.

V tomto návode ste objavili všetky štandardné dátové typy Arduino, ktoré budete najčastejšie používať vo svojich programoch. Neváhajte sa vrátiť k tejto príručke vždy, keď si nie ste istí, ktorý typ premennej by ste mali použiť, alebo aké sú ich obmedzenia.


Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *

Nemôžete kopírovať obsah tejto stránky