Prosím pravověrné programátory se zkušenostmi, aby tento článek přeskočili. Případně, aby si při čtení zacpali pusu, sedli na ruce a zavázali šátkem oči. Tyto mé článečky jsou určené primárně dětem, které chodí na mé kroužky robotiky, případně rodičům (laikům), kteří spolu s dětmi doma objevují svět robotiky prostřednictvím arduina. Nehraji si tedy na programátorského guru (ani zdaleka), jde mi spíše o základy a motivaci do dalšího robokutění.
Proměnná
Asi by se slušelo na začátek napsat o čem že to vlastně mluvíme. Představte si program, který běží, jako velkou dílnu, kde se něco vyrábí. Po stolech se válí spousta materiálu-dat, mezi kouty dílny jezdí vozíky ve kterých se převáží sem a tam rozpracované výrobky a materiál – data. Úplně stejně to funguje při práci programu v arduinu. Program potřebuje někam ukládat data se kterými pracuje a v případě potřeby je zase z uložených míst vybírat. Pro tento účel se v arduinu používá paměť typu RAM (přepisovatelná), kde jsou malé vyhrazené prostory kam je možné data ukládat. Každý takovýto prostor má určitou velikost a název, aby ho bylo schopné arduino nalézt.
Na obrázku si můžeme představit, jak to vlastně funguje. Máme šuplík na kterém je cedulka „cislo“. Šuplík je proměnná a cedulka na něm je jméno proměnné. V šuplíku je vložené číslo 8. Prostor v šuplíku je obsah proměnné a můžeme tedy říci, že proměnná cislo obsahuje číslo 8. Procesu, kterým v kódu řekneme s jakými proměnnými může arduino a program počítat se říká deklarace proměnné. Hodnotu do proměnné přiřadíme velmi jednoduše prostřednictvím znaménka „=“. Přesně jak je to na obrázku – „cislo = 8;„.
Jméno proměnné
Jméno proměnné si nemůžeme jen tak vycucat z prstu. Tvorba jmen proměnných má určitá pravidla a je třeba je respektovat, jinak nám editor programu arduina „odmítne“ schválit vytvářený program.
- proměnná by neměla obsahovat mezery, písmenka s diakritikou (ěščřžýáíéúů), spodní tečkou (.), čárkou(,), lomítkem (/), znaky pro aritmetické operace (+,*,-,/,>,<,), závorky ((,),{,},[,]) a další speciální znaky, jejichž výčtem vás nebudu unavovat.
- čísla ve jméně proměnné být mohou, ale ne na začátku. Není tedy povolena proměnná se jménem „1“, ovšem „test1“ bez problémů projde.
- Pro jména proměnných nepoužívejte příkazy jazyka wiring, jen vyrobíte chaos.
- Při vymýšlení jmen se snažte být jednodušší, ale zároveň popisní. Občas mi vtipálci vymýšlejí proměnné s náhodným shlukem písmen a sami sebe tím pěkně vytrestají v další práci.
Datové typy proměnných
Asi vás nepřekvapí, že pro zápis obsahu potřebujeme rozdílnou velikost paměti. Pokud chceme zapsat do paměti číslo 1, vejde se do mnohem menšího paměťového prostoru než číslo 4528974523695147852. Ale arduino nemá paměti neomezené množství a proto s ní musí hospodařit efektivně a hospodárně. Pro tento účel existují určité značky/tagy, které se používají při deklaraci proměnné. Na základě použitého tagu pak arduino pro každou proměnnou zarezervuje příslušně velký paměťový prostor.
typ proměnné | velikost | rozsah se znaménkem | rozsah bez znaménka | použití |
char | 8b | -128 až 127 | 0-255 | nízká čísla, číselné vyjádření znaků v kódu ASCII |
int | 16b | -32168 až 32767 | 0 – 65535 | nízká a středně vysoká celá čísla |
long | 32b | -2147483648 až 2147483647 | 0 až 4294967295 | vysoká čísla |
boolean | 8b | true/false | true/false | logické operace typu pravda/nepravda |
float | 32b | velmi vysoká čísla s desetinnou čárkou | ||
double | 64b | velmi vysoká čísla s desetinnou čárkou |
Tip: Zkuste si nanečisto zadávat hodnoty do proměnných v prostředí arduino IDE. Pomoci by vám mohl následující obrázek. Nechte program prověřit, jestli jste hodnotu do proměnné vložili správně.
Testujeme proměnnou
Zkusíme si provést velmi jednoduchou „zkoušečku“ na proměnnou typu integer a zároveň si tím můžeme ukázat, jak jednoduše můžeme využít proměnnou v praxi. Zapojte si následující obvod.
Do arduina pak vložte následující kód.
/* Program pro demonstraci vložené hodnoty do proměnné testovaci_promenna */ int testovaci_promenna = 3; void setup() { pinMode(2,OUTPUT); pinMode(3,OUTPUT); pinMode(4,OUTPUT); } void loop() { if (testovaci_promenna==0) //pokud je proměnná 0 { digitalWrite(2,0); digitalWrite(3,0); digitalWrite(4,0); } else if (testovaci_promenna==1) //pokud je proměnná 1 { digitalWrite(2,1); digitalWrite(3,0); digitalWrite(4,0); } else if (testovaci_promenna==2) //pokud je proměnná 2 { digitalWrite(2,0); digitalWrite(3,1); digitalWrite(4,0); } else if (testovaci_promenna==3) //pokud je proměnná 3 { digitalWrite(2,0); digitalWrite(3,0); digitalWrite(4,1); } } |
Na začátku programu je deklarována proměnná se jménem „testovaci_promenna“, je do ní hned vložena hodnota 3. Tuto hodnotu si můžete zkusit měnit. Pokud nabude hodnoty 1,2 nebo 3. Rozsvítí se vám v obvodu LED diody určené pro signalizaci dané hodnoty.
Úkoly:
Zkuste rozšířit zkoušečku tak, aby ukazovala i další hodnoty proměnné.
Zkuste přeprogramovat zkoušečku tak, aby byla schopná ukazovat další hodnoty proměnné bez toho, abyste měnili jakkoliv obvod zkoušečky. Měnit je možné pouze vložený program.
Pingback: Monitor sériové komunikace – ondranauci.cz