Co je Arduino UNO?
Arduino UNO je open-source vývojová deska s jednoduše použitelným hardwarem a softwarem. Je extrémně oblíbená u komunity bastlířů, a to samozřejmě znamená, že za roky své existence vygenerovala množství kopií a vylepšených verzí, například s možností připojení k WiFi za pomocí modulu ESP8266. Jeho největší předností je univerzálnost. Použitý mikrokontroler ATmega328P nabízí slušné množství pinů a dobrý výkon. Poslední verzí desky je Arduino UNO R3, ale na rozdíl od předchozích verzí se moc nezměnila.
Jak něco k Arduinu UNO připojit?
Běžné Arduino UNO má několik sad female dupont konektorů. Když se na desku podíváš ze směru od USB-B portu, můžeš rozdělit piny na dvě sady na levé straně a dvě na pravé. Ty na levé straně označujeme jako digitální nebo I/O piny. Mohou posílat nebo přijímat dvě hodnoty 0V a 5V, tyto dvě hodnoty tvoří jedničku a nulu. Některé z těchto pinů mají funkci PWM neboli pulzně šířkovou modulaci. Ty dokážou pravidelně za sebou vysílat 5V pulzy, jejichž šířku kladného pulzu lze nastavovat. Od toho to jméno. To se hodí pro aplikace, kde potřebuješ regulovat energii něčeho, ale musíš zachovat stejné napětí. Například ovládání jasu LED nebo rychlosti motoru. Stejný princip se používá i pro řízení modelářských servomotorů.
Na druhé straně desky, vzdálenější sada, jsou ADC piny. Ty jsou schopné převést analogový signál, tedy spojitý signál v rozmezí 0-5V, na signál se kterým je digitální mikrokontroler schopen pracovat. Neznamená to ale, že by nemohly fungovat i jako piny digitální.
Bližší sadu pinů na levé straně nelze programovat, o to jsou ale důležitější. Jsou to piny pro napájení senzorů a dalších zařízení, které chceš připojit k desce, pin pro napájení desky (o něm více v kategorii Jak napájet Arduino UNO?), GND piny, které slouží jako takové pomyslné mínus baterie a nakonec RST pin a referenční pin. Když je RST pin připojen k GND pinu, tak se deska resetuje a referenční pin je k nastavování maximálního napětí ADC pinů. A tím můžeme s končit s rozložením pinů desky. Poslední věc kterou jen zmíním jsou sběrnice, Arduino UNO je schopno komunikovat po třech sběrnicích: UART, I2C a SPI.
Jak Arduino UNO naprogramovat?
Programování Arduino UNO je velice jednoduché. Používá se k tomu USB-B konektor a vývojové prostředí Arduino IDE. Jednoduše zapojíš Arduino UNO k počítači pomocí nějakého USB-B kabelu a otevřeš Arduino IDE. V záložce Nástroje vyber mezi deskami Arduino UNO a pak mezi porty vyber port, na který se Arduino UNO po připojení k počítači nastavilo. S největší pravděpodobností u něj bude rovnou napsané Arduino UNO. Podrobnosti si můžeš přečíst v našem článku Začínáme s Arduinem.
Jazyk ve kterém se v Arduino IDE programuje má název WIRING. Je extrémně podobný C++, takže pokud umíš programovat v C++, tak programování Arduina ti nebude dělat problém. Tady je ukázka některých základních pokynů, kompletní list najdeš na stránce Arduino Wiring Reference: DigitalWrite změní napětí na vybraném pinu podle zvoleného parametru, buď na 5V (HIGH), nebo na 0V (LOW). DigitalRead vrátí 1 nebo 0 podle toho, zda je k vybranému pinu přivedeno 5V nebo 0V. AnalogWrite je určené pro PWM piny a parametr funkce určuje délku kladného pulzu. AnalogRead slouží pro čtení aktuální velikosti napětí na ADC pinu. Nutno dodat, že hodnota, která je funkcí vrácena není přímo hodnota tohoto napětí, ale digitální hodnota, která je výsledkem převodu analogového napětí na digitální. Pro získání velikosti napětí je pak potřeba provést přepočet. O tom ještě bude zmínka později.
Jak Arduino UNO napájet?
Napájet Arduino lze několika způsoby. Asi nejjednoduší je jej napájet stejným způsobem jako ho programovat – pomocí USB-B konektoru. Lze ale také použít powerbanku, nebo napájecí adaptér do zásuvky s USB konektorem. Nevýhodou této metody je samozřejmě nutnost mít USB-B kabel a těch má málokdo přebytek.
Druhou možností je použít standardní napájecí konektor, který je schopen většinou dodávat mnohem více energie a také jsou zdroje s tímto konektorem v domácnostech relativně běžné. Aby jsi zjistil zda zdroj, který jsi doma našel, jde použít, je nutné někde na zdroji zjistit jeho výstupní napětí a proud. Většinou jsou tyto údaje na zdroji nadepsané jako OUTPUT. Pokud je výstupní napětí mezi 6-12V a proud 1A a více, tak tento zdroj použít lze. Pokud ne musí se použít jiný.
Poslední metoda je napájet desku pomocí Vin pinu. Tento způsob se nejvíce hodí pokud chceš používat Arduino UNO s baterií, nebo použít zdroj 5V z jiného modulu. Jednoduše připojíš kladný pól na Vin pin a ten záporný na kterýkoliv GND pin na desce.
Jednoduchý projekt, abychom si to vše vyzkoušeli v praxi.
Co budeš potřebovat?
- deska Arduino UNO, zde je několik možností
- Originální Arduino UNO, které je narozdíl od jeho klonům dražší, ale kvalitnější. Funkčně jsou klony většinou stejné.
- Identickou kopii Arduina UNO se stejným převodníkem a pouzdrem pro microkontroler.
- Kopii Arduina UNO s jiným USB převodníkem. Pro něj je nutné stáhnout a nainstalovat jiný ovladač (návod). Má také mikrokontroler v SMD pouzdru a se sadou dalších pinů které k němu lze připájet, pokud potřebuješ, na jeden pin další kabely, nebo Dupont konektory. Toto je nejlevnější možnost.
- Arduino UNO zkombinované s WiFi modulem ESP8266 které je sice komplikovanější programovat, ale zabaví tě mnohem déle. Používá také USB převodník CH340 jako předchozí varianta. Dále nepoužívá USB-B konektor, ale mnohem běžnější microUSB.
Co budeme dělat?
Vytvoříme program pro ovládání LED pomocí zabudovaného trimru a tlačítek. Fungovat to bude tak, že se bude měnit intenzita svitu LED diody podle toho, jak bude natočen trimr na desce. Takový ručně ovládaný stmívač.
Nejprve zasuň Funduino štít do Arduino UNO desky a desku připoj k počítači. Na počítači otevři Arduino IDE a v nástrojích vyber správnou desku a port. Potom je potřeba se podívat na referenci Funduino štítu a tam se dozvíš, že trimr je připojen k pinu A0 desky Arduino a vstupní tlačítka jsou připojeny k pinům A1 a A2. Tyto piny budou fungovat jako vstup a tak je pomocí funkce pinMode nastav jako INPUT. LED diody jsou na štítu hned čtyři, ale funkci PWM, kterou potřebujeme, mají jen tři. My jsme zvolili pro tento příklad pin 11. Piny 10 a 13 by ale měli také fungovat. Ať zvolíš kterýkoliv pin, nastav ho jako výstup.
Nejprve si představíme část kódu, ve které budeme číst napětí z trimru a nastavovat pomocí něho vstup do LED. Vytvoř si novou proměnou a pojmenuj ji třeba val. Proměnná bude typu int (celé číslo). Val se bude rovnat přečtené hodnotě z trimru tedy val = analogRead(A0);. To ti dá hodnoty mezi 0-1023. Funkce digitalWrite ale přijímá hodnoty jen v rozmezí 0-255. Musíš tedy hodnotu z A0 převést. Funkce pro PWM bzučáku bude pak vypadat takto analogWrite(3,val*(255./1023.));.
Nakonec uděláme vypínání a zapínání bzučáku pomocí funkce IF. To je funkce, která provede kód, který je za ní ve složených závorkách, když je její parametr pravdivý. Tato funkce doplněná o sekci ELSE může vykonat kód i v případě, že podmínka funkce je nepravdivá.
Udělej si novou proměnnou jménem ON, která bude typu boolean. Tento typ proměnné může mít pouze dvě hodnoty – True(pravda) a nebo False(nepravda). Proměnou při tvorbě nastav jako False. Pokud bude zmáčknuté tlačítko A1 tak se tato proměnná změní na True, a když tlačítko A2 tak opět na False. Jako poslední dáme náš předchozí kód do těla funkce IF jejíž parametr je proměnná ON a to první sekce pro vykonání kódu když je podmínka pravdivá. Pokud podmínka pravdivá není, tak do sekce ELSE dáme řádek digitalWrite(3,LOW);. A to je vše, už stačí tento kód nahrát a vyzkoušet.