Úvod do programování mikrokontroléru

V tomto článku si ukážeme, jak začít s programováním mikrokontroléru Maker UNO.

Analogový vs digitální signál

Předtím než se pustíte do programování mikrokontroléru a řízení připojených obvodů, musíte napřed chápat rozdíl mezi analogovým a digitálním signálem.

Digitální signál nabývá dvou stavů ‒ zapnutý/ON (proud prochází obvodem) a vypnutý/OFF (proud neprochází obvodem). Posláním signálu ON na pin 5 můžeme připojené elektronické zařízení aktivovat. Posláním signálu OFF můžeme připojené elektronické zařízení naopak deaktivovat.

Analogový signál nabývá více než dvou stavů. Pro Arduino jsou to hodnoty od 0-255. 0 znamená že do obvodu neproudí žádný proud (napětí je 0 V) a 255 je maximální napětí v obvodu. Analogové hodnoty (0-255) jsou přímo úměrné napětí, které se pošle na výstupní pin (např. 127 pošle na výstupní pin 50 % maximálního možného napětí). Jinými slovy, když připojíme nějakou LED na analogový pin tak hodnota 0 ledku vypne, 127 jí rozsvítí na polovinu jasu a 255 jí rozsvítí na plný jas.

Kostra programu

Mikrokontrolér spouští dvě hlavní funkce ‒ setup() a loop(). Jak ukazuje následující diagram, funkce setup() se provádí pouze jednou, na začátku, zatímco funkce loop() běží pořád dokola, dokud se Arduino nevypne.

Vývojové prostředí

K programování použijeme speciální integrované vývojové prostředí Arduino IDE, které je volně ke stažení na oficiálních stránkách Arduina, www.arduino.cc.

Tip: Po prvním spuštění Arduino IDE doporučujeme zapnout funkci zobrazení čísel jednotlivých řádků: Soubor → Vlastnosti → Zobrazit čísla řádků.

V Arduino IDE se hlavičky základních funkcí setup() a loop() vytvoří automaticky.

void setup() {
  // sem vložte svůj zaváděcí kód, který se spustí na začátku

}

void loop() {
  // sem vložte svůj hlavní kód, který poběží ve smyčce

}

Tvorba programu

Základní pravidla

  1. Arduino rozlišuje velká a malá písmena.
  2. Každý řádek musí končit středníkem ;.
  3. Každá závorka ( a { musí být uzavřena odpovídající závorkou ), respektive }.
  4. Pozor na překlepy!

Obecný postup

Krok č. 1

Pomocí pinMode ve funkci setup() identifikujte použité piny a specifikujte způsob, jak budou použity – jako vstup nebo jako výstup.

Krok č. 2

Naplánujte si, co a jak budete programovat. U složitějších programů začněte diagramem.

Krok č. 3

Do funkce loop() vložte svůj kód, který bude řídit výstupy a reagovat na vstupy.

Krok č. 4

Pomocí USB kabelu připojte své Maker UNO k počítači a v nastavení Arduino IDE vyberte příslušný port.

Krok č. 5

Nahrajte program do Maker UNO, klikněte v Arduino IDE na tlačítko Upload.

Poznámka: Váš kód zůstane v paměti mikrokontroléru tak dlouho, dokud ho nepřepíšete jiným kódem.

Diagram

Než napíšeme program, měli bychom naplánovat postupy v programu pomocí diagramu. Vysvětlení použitých symbolů je na obrázku níže.

Příklad č. 1: funkce digitalWrite()

Maker UNO má u každého pinu jednu integrovanou LED. To se skvěle hodí se k našemu úvodu do programování a později k diagnostice obvodů.

Poznámka: Integrované LED má pouze Maker UNO. Pro použití s Arduino UNO musíte připojit externí LED.

Vytváříme jednoduchý sekvenční program bez podmínek. Ovládá pin 13, který každou vteřinu střídavě zapíná a vypíná.

Následující kód reprezentuje program z předchozího diagramu:

1 void setup() {
2   pinMode(13, OUTPUT);
3 }
4
5 void loop() {
6   digitalWrite(13,HIGH);
7   delay(1000);
8   digitalWrite(13,LOW);
9   delay(1000);
10 }
ŘádekKód / symbolFunkce
1void setup() {Tímto začíná funkce setup(), která se používá k definování pinů.
Všimněte si, že void a setup mají v Arduino IDE
rozdílné barvy. Barva indikuje, že jsou to speciální, tzv. klíčová slova.
Symbol { označuje začátek kódu funkce setup().
2pinMode
(13, OUTPUT);
Nastavuje pin na vstup (input) nebo výstup (output). V tomto případě je pin 13 nastaven na výstup.
3}Symbol } označuje konec funkce setup(). Počínaje symbolem { na řádku 1, funkce setup() obsahuje pouze kód mezi { a }, což jsou řádky 1-3.
4
5void loop() { Tento řádek označuje začátek funkce loop(), která poběží pořád dokola, dokud Arduino nevypneme. Slova void a loop jsou znovu slova klíčová, takže mají rozdílnou barvu.
Symbol { označuje začátek funkce loop().
6digitalWrite
(13, HIGH);
Příkaz digitalWrite() posílá digitální signál na definovaný pin. Tento řádek pošle signál HIGH na pin 13, čímž aktivuje připojený obvod.
7delay(1000) Příkaz delay() pozastavý průběh programu na definovaný počet milisekund. 1000 milisekund je 1 vteřina.
8digitalWrite
(13, LOW)
Tento řádek pošle signál LOW na pin 13, čímž tím ho vypne a deaktivuje připojený obvod.
9delay(1000) Potřebujeme přidat další zpoždění, kdybychom ho nepřidali, přeskočí program zpět na řádek 6 a spustí LED dříve než postřehneme její vypnutí.
10}Symbol } označuje konec funkce loop().
Funkce loop() obsahuje jen řádky mezi 5. a 10. řádkem.

Následující program pak rozbliká střídavě LED u pinů 9 a 8.

digitalWrite(9, LOW);
digitalWrite(8, HIGH);
delay(1000);
digitalWrite(9, HIGH);
digitalWrite(8, LOW);
delay(1000);

Příklad č. 2: funkce analogWrite()

Poznámka: Ne každý pin dokáže vysílat analogový signál, to mohou pouze piny označené na desce znakem ~ (vlnovka). Jsou to piny 3, 5, 6, 7, 9, 10 a 11.

K posílání analogových signálu slouží funkce analogWrite(pin, hodnota), kde hodnota je číslo v rozmezí od 0 - 255 a pin je číslo pinu.

  • analogWrite(9, 255) pošle hodnotu 255 na pin 9. 255 značí maximální napětí.
  • analogWrite(9, 127) pošle hodnotu 127 na pin 9, což znamená 50 % maximálního napětí.
  • analogWrite(9, 0) pošle hodnotu 0 na pin 9. 0 značí nulové napětí.

Shrnutí

Mikrokontrolér může na své výstupy vyslat jeden ze dvou základních signálů – analogový nebo digitální. Vysílání řídí náš program uložený v paměti mikrokontroléru. Program má dvě části, funkci setup(), která vše připraví a funkci loop(), která se opakuje. Program vytváříme a do paměti mikrokontroléru nahráváme z integrovaného vývojového prostředí Arduino IDE.

V příštím díle si popíšeme základní součástky, které můžeme na výstup mikrokontroléru připojit a ukážeme si jak je ovládat.

Podobné příspěvky

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *