Datové typy proměnných Flashcards

1
Q

Proměnné

A

Proměnná je místo, ve kterém se dají uchovávat data. Každá proměnná má vlastní jméno, datový typ a hodnotu. Často se používají například tam, kde se v programu dokola opakují ty samé hodnoty.
Vytvořit proměnnou ale nemůžeme jen tak někde. Když budeme chtít používat danou proměnnou všude v programu, musíme ji vytvořit vně všech funkcí (tedy i mimo funkce setup a loop). Pokud nám stačí používat proměnnou uvnitř jedné funkce a nikde jinde ji nepotřebujeme, stačí, když ji deklarujeme uvnitř funkce.

každá proměnná má svůj datový typ. Ten nám říká, jaká data můžeme v proměnné najít. Může se jednat o logické hodnoty (true/false), znaky, nebo čísla.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Typy proměnných

A

Byte, Integer, Float, Long, Boolean, Char

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Byte

A

Proměnná datového typu byte má velikost 8 bitů a slouží

k uchování celých čísel. Její rozsah je 28 hodnot - 0 až 255

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Integer

A

Slouží k ukládání celých čísel. U desek s procesory Atmega (tedy naprostá většina) uchovává 16-bit hodnotu - tedy od -32,768 do 32,767.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Long

A

Slouží k uchování celočíselných 32 bitových hodnot od -2,147,483,648 do 2,147,483,647.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Float

A

Tento datový typ je určený pro uchování čísel s desetinnou čárkou s přesností na 7 desetinných míst. Jeho velikost je 32 bitů. Můžeme v něm ukládat hodnoty od -3,4028235 * 10³⁸ do 3,4028235 * 10³⁸.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Char

A

Tento datový typ slouží k uchování jednoho znaku textu. Znak je zde uchován jako jeho číselná hodnota v ASCII tabulce znaků. Písmena, slova i věty se píšou v uvozovkách. K uchování řetězců textu slouží typ string, kterým se budeme zabývat za chvíli.
Pokud chceme používat bezznaménkovou variantu, musíme před jméno datového typu přidat slovo unsigned. Pokud bychom chtěli uvést znaménkovou variantu, můžeme před číslo zapsat signed. Je to ale zbytečné, protože jsou tyto typy znaménkové ve výchozím stavu.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Desetinná čísla, architektura

A

Je také potřeba si uvědomit, že práce s desetinnými čísly není přesná. Nebudeme zbytečně zabíhat do detailů, pamatujte si ale, že výraz 8,0 2,0 nám nemusí vrátit výsledek 4,0. Kvůli zaokrouhlování během výpočtu se může stát, že výsledek bude třeba 3,99987. Kdykoliv jde použít celočíselný datový typ, použijte raději ten a typům jako float a double se vyhněte.

Jazyk C striktně nespecifikuje velikost základních datových typu, vše záleží na použité architektuře. Například datový typ int má na AVR velikost 16 bitů, ale pro rodinu ARM nebo x86 je to 32 bitů. V případě jiných architektur to může být ještě jinak.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Pole

A

Pole (anglicky array) je speciální typ proměnné. Umožňuje shromáždit více hodnot do jedné proměnné. Můžete si jej představit, jako krabičku, která má jednotlivé přihrádky očíslované. Když víme, jakou krabičku používáme a do jaké přihrádky se chceme podívat, můžeme se dostat k požadované hodnotě. V programátorské terminologii se číslům přihrádek říká index.
Jejich deklarace je podobná, jako u proměnných – každé pole má datový typ hodnot, které v něm najdeme, jméno, hodnoty, a navíc i velikost pole.

Ve většině programovacích jazyků jsou indexy v poli číslovány od nuly. Prvek na prvním místě má tedy index 0. Čtení hodnoty prvku pole poté probíhá stejně, jako u proměnných, jen musíme připojit ještě jeho index.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Konstanty

A

Konstanty si můžeme představit jako proměnné, které mají přednastavenou hodnotu, definovanou tvůrci Arduina. Mají za úkol zpřehlednit práci a přiblížit kód lidskému jazyku. Můžeme je rozdělit do tří skupin.

  • Logické konstanty
  • Typ digitálního pinu
  • Hodnota proudu na pinu

pinMode() dvě konstanty - OUTPUT a INPUT nebo INPUT_PULLUP

  • OUTPUT Při stavu HIGH výstup poskytne max I=40 mA Při stavu LOW může stejně velký proud přijmout
  • INPUT - ke čtení hodnot z digitálních senzorů (nejjednodušší jsou tlačítka), ale i ke komunikaci. Při použití s tlačítkem si všimněme, že je tento pin stále připojen ke GND přes 10k ohm rezistor. Při nezmáčknutém tlačítku je tedy výsledek funkce digitalRead() hodnota LOW. Po zmáčknutí tlačítka dojde k připojení k +5 V a změny hodnoty funkce na HIGH.

-INPUT_PULLUP – podobně, jako INPUT - Rozdíl je v tom, že dojde k připojení interního rezistoru. Ten je uvnitř čipu zapojen mezi digitálním vstupem a +5V. Výchozí hodnota funkce digitalRead() je tedy HIGH. Když chceme hodnotu změnit, musíme vstup připojit na GND. Při použití příkladu s tlačítkem má tedy funkce hodnotu HIGH, když je tlačítko uvolněno a LOW, když je zmáčknuto.

Jsou pouze dvě možné hodnoty, jaké může mít proud při čtení a zápisu pomocí funkcí digitalRead() a digitalWrite(). Jsou to hodnoty LOW a HIGH.

  • HIGH při čtení pomocí funkce digitalRead() je vyhodnocena hodnota napětí jako HIGH, pokud je větší než 3V. Když použijeme funkci digitalWrite(pin, HIGH), na výstupu bude právě 5V.
  • LOW Při čtení je stav napětí vyhodnocen jako LOW, pokud je jeho velikost menší než 2V. Při zápisu je hodnota 0V.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Analogový vstup a výstup

A

Na to má Arduino ve výbavě užitečné funkce. Ke čtení a zápisu se zde používají funkce analogRead() a analogWrite(). Ty jsou však limitovány pro použití pouze na určených pinech

  • analogWrite(číslo_pinu, hodnota) rozsah hodnoty 0-255
  • sloužící k nastavení “analogové” hodnoty na pinu. Můžeme ji použít pouze na pinech označených PWM (u Arduina UNO jsou to piny: 3, 5, 6, 9, 10, 11)
  • generuje PWM signál, což je jakási digitální “náhražka” analogového signálu.
  • rychle střídá 0 a 5V
  • analogWrite(pin, 127) // 50% 5 V a 50% 0V
  • analogRead()
  • slouží ke čtení analogové hodnoty na vstupech (A0-A5) Většina desek Arduina má rozlišení 10 bitů, což odpovídá hodnotám od 0 do 1023
  • proměnná = analogRead(pin)

Z funkce analogRead() vychází hodnoty 0 až 1023, kdežto analogWrite() čeká na rozsah hodnot 0 až 255. Musíme tedy zajistit převod hodnot. To je v tomto případě jednoduché, protože 256 (28) se vejde do 1024 (210) čtyřikrát. Nejjednodušším způsobem je tedy vydělení hodnot z analogRead() čtyřmi.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly