User manual

Soubor si uložte a vyberte Tools > make, sledujte zprávy v zobrazovacím okně. Několik sekund
počkejte, dokud program nedokončí hlášení. Zkontrolujte, jestli se ve spodním řádku objeví informace
o bezchybném zpracování zdrojového souboru: Process Code: 0.
Pokud kompilátor zobrazí jinou zprávu, budete muset analýzou zdrojového kódu zjistit, kde se stala
chyba. Stojí za to, podívat se na první řádek zdroje, ve kterém se píše o chybách. V levém spodním
rohu zobrazovaného okna zobrazuje editor číslo řádku zdroje.
Po úspěšném převodu můžete záměrně změnit slovo v zdrojovém programu. Restartujte proces make
a zkontrolujte, pod kterým číslem řádku byla ohlášena chyba.
Po úspěšné, tj. bezchybné kompilaci se nový program může přenést na robota. Připojte IR vysílač,
otevřete Flash-Tool, vyberte nově vytvořený program test.hex a správné COM rozhraní. Položte
robota vedle IR vysílače, aktivujte tlačítko Programm a počkejte, dokud se nedokončí přenos souboru.
Po úspěšném dokončení přenosu vypněte robota a znovu ho zapněte. Sekundu počkejte a
zkontrolujte, jestli se stavová LED změnila barvu na červenou. Dříve než změníte zdrojový kód,
byste se měli dozvědět více o programování, a proto doporučujeme přečíst si nejdříve následující
část "Programování ASURO v jazyce C".
Pozor!
Je také možné načíst demo program test.c ze složky ASURO_src\FirstTry;
Tento program, jenž obsahuje následující řádky, lze snadno zaměnit za výše uvedený program.
#include “asuro.h”
int main(void) {
Init();
while(1);
return 0;
}
Programování ASURO v jazyce C
Tato část je věnována programovacímu jazyku C, ale zabývat se budeme jenom prvky, které jsou
potřebné pro ovládání systému ASURO. Nejedná se samozřejmě o kompletní návod k C, který si
můžete opatřit běžně na trhu
1
.
Jazyk C byl zvolen kvůli tomu, že jeho standard je hodně rozšířený a kompilátor C je dostupný pro
téměř každý procesor. Pro robota ASURO jsme zvolili kompilátor volně dostupný Gnu-C-Kompilátor,
který generuje dobře optimalizovaný kód pro procesor robota ATmega8.
Každý, kdo se už seznámil s jazykem C, se v této části návodu nedoví nic nového a může přejít dál
na "Přehled funkcí robota ASURA". Popíšeme si vybrané prvky, které jsou nezbytně nutné pro
ovládání robota ASURO.
Žádné obavy: Pokud si dáte pozor na používání závorek a středníků, nebude jazyk C vůbec složitý.
A samozřejmě, ASURO není hračka!
Základy programování v jazyce C
Úvod
Procesor v zásadě vykonává příkazy v programu C krok za krokem od začátku do konce programu
2
.
V standardním procesoru robota nelze zpracovávat paralelní procesy, takže se musíme zaměřit na
sekvenční pracovní příkazy.
Prázdná místa na začátku řádků v příkladech slouží jen jako strukturální pomůcka pro čtení a lze je
vynechat. Vložené mezery však umožňují vytvořit skvělou programovací strukturu a jsou mimořádně
užitečné, protože pomáhají udržovat si přehled v delších programech.
Každý příkaz v jazyce C se musí ukončit středníkem ";", aby mohl kompilátor přiřadit všechny prvky
k správnému příkazu. Bude-li potřebné spojit příkazy ve funkcích, smyčkách, nebo v podmíněných
příkazech, seskupí se tato sada příkazů vložením mezi speciální závorky (“{”, “}”).
Příklad:
#include “asuro.h”
int main(void) {
/* All elements between these brackets belong to one set of commands */
}
-----------------------------------------------------
1
Například: Brian W. Kerninghan, Dennis M. Ritchie: “Programming in C”,
2
Metody odchylek od sekvenčního řízení v programech se nazývají "řízení toku" a popisují se níže.
Když chceme mezi dva programovařádky umístit komenř, uvádí se sada slov komentáře na
začátku “/*” a končí znakem “*/ ”. Jako komentář lze definovat i jeden řádek, který uvedeme znakem
“//“
3
. Transformace příkazového řádku na komentář se často používá k vyjmutí určitých částí ze
zpracování. Všechny komentáře bude kompilátor ignorovat. Správně vložené komentáře nezpůsobí
nikdy problémy v provádění programu.
Proměnné a datové typy
Proměnné slouží v programování jako úložiště pro data a v průběhu programu se mohou definovat,
vyplnit, číst, nebo změnit. Aby se proměnná mohla použít, musí se nejprve deklarovat. V deklaracích
se proměnná přiřadí k určitému typu a může se jí zadat i počáteční hodnota. Typem se definuje, jaký
druh dat se uvnitř proměnné ukládá (celá čísla, kladná čísla, reálná čísla, atd.).
Proměnné se označují názvy, které musí začínat písmenem (podtržítko _ se také považuje za
písmeno) a mohou obsahovat číslice, ale nesmí obsahovat žádný ze zvláštních znaků. Rozeznávají
se přitom velká a malá písmena. Například: x a X odkazují na různé proměnné. Velká písmena se
běžně používají pro konstanty (které nelze v toku programu měnit, např. číslo = 3,1415) a malá
písmena se používají pro proměnné.
Následující názvy jsou vyhrazena slova, která nelze použít pro pojmenování proměnných.
auto default float long sizeof union
break
do
for
register
static
unsigned
case double goto return struct void
char else if short switch volatile
const enum int signed typedef while
continue extern
K programování robota se použijí následující datové typy:
Typ
Rozsah hodnot
Poznámky
char -128 … +127 Bajt (v délce 8 bitů) ukládá znak abecedy
unsigned char 0 … 255 Ukládá jen kladné hodnoty
int -32768 … +32767 Dvoubajtové hodnoty v rozsahu -32768 … +32767
unsigned int
0 … 65535
Celá čísla v rozsahu 0 … 65535
float Reální čísla
3
Podle standardů C++ je "//" znakem komentáře. Ve skutečnosti kompilátor pro robota je kompilátorem C++
a znak "//" bude chápat jako znak komentáře, ale v jiných kompilátorech s tím mohou nastat problémy
.
Proměnné lze deklarovat jako globální mimo hlavní () funkci, nebo jako lokální uvnitř hlavní () funkce.
Globální proměnné jsou platné v rámci celého programu, zatímco lokální proměnné budou platné jen
uvnitř hlavní (), nebo nějaké jiné funkce. Lokální proměnné budou platné pro programovací kód uvnitř
funkce a mimo funkce budou neplatné.
Proměnné jsou nám k ničemu, pokud je nedokážeme naplnit daty. Přiřazení dat je však poměrně
jednoduché:
a=17; // proměnná, která obsahuje hodnotu 17
nebo pomocí výpočtu:
a=17+23; // proměnná, která obsahuje hodnotu 40
Speed=a+3; // proměnná Speed obsahuje hodnotu 43
Speed=Speed*2;// proměnná Speed obsahuje hodnotu 86
Je dobrou programovací praxí používat jasná a srozumitelná pojmenování. Název proměnné "speed"
(rychlost) v uvedeném příkladě se rozumí sám o sobě. Používání samostatných písmen jako názvu
proměnných by se mělo zamezit, protože to má často za následek špatně čitelný programovací kód.