Bastlíme s Arduinem – píšeme první program | Kapitola 7
Seznam kapitol
Po nějakém čase se vracíme k bastlení s Arduinem. Dnes se však od hardwaru trošku odkloníme a podíváme se na software. Arduino totiž není jen o elektrobastlení, ale také o algoritmizaci, která nám prostřednictvím mikroprocesoru umožní celý náš výtvor rozhýbat. Dejme se tedy do práce, programátoři!
A protože máme z minulé kapitolky již vše zapojené, nezbývá než napsat obslužnou rutinu.
Inicializace – setup()
V případě inicializace není nutné výstupní pin inicializovat, protože ho budeme provozovat v PWM módu (vyplývá to z dokumentace k funkci analogWrite() o niž si povíme za chvilku). Funkce setup() bude tedy v tomto příkladě prázdná.
Pro analogový vstup rovněž není žádná inicializace nutná.
void setup() { // zde neni nic potreba }
Hlavní cyklus – loop()
Zbytek programu už se ale od prvního projektu poměrně významně liší (asi tak ve všem). Setkáváme se zde se dvěma úplně novými funkcemi – analogRead() a analogWrite(). A protože už jsme zkušení Arduino bastlíři, otevřeme si dokumentaci, abychom věděli, s čím máme tu čest.
Funkce analogRead() nám umožňuje číst hodnotu vstupního napětí v rozsahu 0–5 V naměřenou na analogových vstupech procesoru převedenou do číselného rozsahu 0–1023. My ji musíme v argumentu předat pouze číslo analogového vstupu. Na oplátku nám funkce vrátí číselnou hodnotu na vstupu. Tu si můžeme vyčíst například do nějaké proměnné. Já si tu svoji pojmenoval „pot“ a deklaroval ji mimo funkce setup() a loop().
Další neodmyslitelnou funkcí, kterou v tomto projektu použijeme, je analogWrite(). Díky té je totiž možné ovládat PWM výstup, o němž jsme se zmínili v minulé kapitole. V prvním argumentu ji opět předáme číslo pinu. V argumentu druhém předáváme hodnotu střídy v rozsahu od 0 do 255. Já v argumentu předávám hodnotu, již jsem vyčetl z analogového vstupu. Hodnotu navíc musím podělit 4, protože z analogového vstupu čtu hodnoty v rozsahu 0 až 1023, zatímco funkce pro zápis na PWM výstup akceptuje čísla pouze v rozsahu 0 až 255.
int pot = 0; void setup() { // neni co inicializovat } void loop() { // hlavni cyklus pot = analogRead(0); // precti udaj z potenciometru na A0 analogWrite(11, pot / 4); // uprav jas LED }
Pakliže kompilace a upload kódu do Arduina prošel bez chyb, můžeme si nyní potenciometrem nakroutit požadovaný jas. No není to jednoduché?
Za poskytnutí součástek a podporu děkujeme Arduino-Shop.cz!