• příkazy arduino ide. Arduino a kompatibilní programovací jazyky. Projekty využívající řadič Arduino. Petin V.A.

    Programovací jazyk Arduino je založen na jazyku C/C++, který je ve světě programování široce používán.

    Cílovou skupinou Arduina jsou neprofesionální uživatelé v oblasti robotiky a jednoduchých automatizačních systémů. Hlavním produktem je sada desek, jejichž kombinací je možné vytvářet různá zařízení schopná plnit širokou škálu úkolů.

    Například ze sady prken vyrobených touto společností můžete sestavit automatické krmítko pro vaše miláčky. A to je jen jeden z nejjednodušších příkladů. Rozsah jejich možné aplikace je omezen pouze představivostí uživatelů.

    Kromě desek plošných spojů vyráběných pod značkou Arduino mají vlastní programovací jazyk Arduino, který vychází z jazyka široce známého v okruhu programátorů. C/C++. Pojďme se blíže podívat, co to je.

    Programovací jazyk Arduino je poměrně snadné se naučit, protože hlavní cílovou skupinou pro jeho použití jsou amatéři. Je však považován za jeden z nejlepších jazyků pro programování mikrokontrolérů.

    Středník;

    Za každým výrazem napsaným v programovacím jazyce Arduino musí následovat středník. Například:

    int LEDpin = 9;

    V tomto výrazu přiřazujeme hodnotu proměnné a všimněte si středníku na konci. To říká kompilátoru, že jste dokončili část kódu a přecházíte na další část. Středník v kódu Arduino odděluje jeden úplný výraz od druhého.

    Dvojité zpětné lomítko pro jednořádkové komentáře //

    // Cokoli za dvojitým lomítkem bude šedé a program to nepřečte

    Komentáře jsou to, co používáte ke komentování kódu. Dobrý kód je dobře okomentován. Komentáře vám a všem, kdo by mohli narazit na váš kód, sdělili, co jste si mysleli, když jste jej psali. Dobrý komentář by byl asi tento:

    // Připojte LED k tomuto Arduino pinu int LEDpin = 9;

    Nyní, i po 3 měsících, když koukám na tento program, vím, kde byla LED připojena.

    Překladač bude komentáře ignorovat, takže si můžete psát, co chcete. Pokud pro komentář potřebujete hodně textu, můžete použít víceřádkový komentář uvedený níže:

    /* Víceřádkový komentář se otevře jedním zpětným lomítkem následovaným hvězdičkou. Cokoli poté bude zašedlé a kompilátor bude ignorovat, dokud komentář nezavřete nejprve hvězdičkou a poté zpětným lomítkem */

    Komentáře jsou podobné poznámkám pod čarou ke kódu, ale jsou častější než ty, které se nacházejí na konci stránek v knihách.

    Složené závorky ( )

    Složené závorky se používají k přidání instrukcí, které funkce vykonává (funkce si probereme dále). Vždy existuje otevřená složená závorka a uzavírací složená závorka. Pokud zapomenete zavřít složenou závorku, kompilátor vypíše chybový kód.

    Void loop() ( //tato složená závorka se otevře //tady skvělý program )//tato složená závorka se zavře

    Pamatujte - žádná složená závorka nemůže být uzavřena!

    Funkce ()

    Nyní je čas mluvit o funkcích. Funkce jsou části kódu, které se používají tak často, že jsou zapouzdřeny do konkrétních klíčových slov, abyste je mohli snadněji používat. Funkce může být například následující sada pokynů v případě, že potřebujete vykoupat psa:

    1. Pořiďte si kbelík
    2. Naplňte ji vodou
    3. Přidejte mýdlo
    4. Najděte si psa
    5. Namydlete psa
    6. umyj psa
    7. Opláchněte psa
    8. Suchý pes
    9. odložte kbelík

    Tuto sadu jednoduchých instrukcí lze zapouzdřit do funkce, kterou můžeme nazvat WashDog. Pokaždé, když chceme provést všechny tyto instrukce, napíšeme WashDog a voila - všechny instrukce se provedou.

    Arduino má určité funkce, které se často používají v . Když je zadáte, název funkce bude oranžový. Například funkce pinMode() je obecná funkce používaná k označení režimu pinů Arduina.

    A co závorky za funkcí pinMode? Mnoho funkcí vyžaduje argumenty. Argumentem jsou informace, které funkce používá při svém spuštění. Pro naši funkci WashDog mohou být argumenty jméno psa a druh mýdla, stejně jako teplota a velikost kbelíku.

    PinMode(13, VÝSTUP); //Nastaví režim pinů Arduino

    Argument 13 odkazuje na kolík 13 a OUTPUT je režim, ve kterém chcete, aby kolík fungoval. Když zadáte tyto argumenty, v terminologii se tomu říká předávání dat, předáte funkcím potřebné informace. Ne všechny funkce vyžadují argumenty, ale otevírací a uzavírací závorky zůstávají, i když prázdné.

    millis(); //Získejte čas v milisekundách pro spuštění Arduina

    Všimněte si, že slovo OUTPUT je obvykle modré. V programovacím jazyce Arduino jsou určitá klíčová slova, která se často používají, a modrá barva je pomáhá identifikovat. Arduino IDE je automaticky změní na modrou.

    void setup()

    Funkce setup(), jak název napovídá, slouží k nastavení desky Arduino. Arduino spustí veškerý kód mezi složenými závorkami po setup() pouze jednou. Typické věci, které se dějí v setup(), jsou například nastavení kontaktního režimu:

    Void setup() ( // kód mezi složenými závorkami se provede pouze jednou )

    Možná se ptáte, co znamená void před funkcí setup(). Void znamená, že funkce nevrací žádné informace.

    Některé funkce vracejí hodnoty – naše funkce DogWash může vrátit počet kbelíků potřebných k vyčištění psa. Funkce analogRead() vrací celočíselnou hodnotu mezi 0 a 1023. Pokud se vám to teď zdá trochu divné, nemějte obavy, protože v průběhu kurzu se budeme zabývat každou běžnou funkcí Arduina.

    Podívejme se na několik věcí, které byste měli vědět o setup():

    1. setup() se spustí pouze jednou;
    2. setup() musí být první funkcí v náčrtu Arduina;
    3. setup() musí mít otevírací a zavírací složené závorky.

    void loop()

    Musíte milovat vývojáře Arduino, protože díky nim názvy funkcí mluví samy za sebe. Jak název napovídá, veškerý kód mezi složenými závorkami v loop() se opakuje znovu a znovu a slovo loop je přeloženo přesně jako „smyčka“. Funkce loop() je místo, kde bude tělo vašeho programu.

    Stejně jako u setup() ani funkce loop() nevrací žádnou hodnotu, proto jí předchází slovo void.

    Void loop() ( //jakýkoli kód, který sem vložíte, se spouští znovu a znovu)

    Zdá se vám divné, že kód běží v jedné velké smyčce? Tento zjevný nedostatek variací je iluzí. Většina vašeho kódu bude mít určité čekací podmínky, které spustí nové akce.

    Existují další programy, které pracují s Arduinem?

    Kromě oficiálního Arduino IDE existují programy třetích stran, které nabízejí své produkty pro práci s mikrokontroléry na bázi Arduina.

    Podobnou sadu funkcí nám může poskytnout program s názvem Processing. Je velmi podobný Arduino IDE, protože oba jsou vyrobeny na stejném enginu. Processing má rozsáhlou sadu funkcí, která není horší než původní program. Pomocí Sériové knihovny ke stažení může uživatel vytvořit komunikaci mezi daty, která si deska a Processing posílají, a tím docílit toho, aby deska spouštěla ​​programy přímo z našeho PC.

    Existuje další zajímavá verze původního programu. Jmenuje se B4R a jeho hlavní rozdíl spočívá v tom, že jako základ nepoužívá jazyk C, ale jiný programovací jazyk – Basic. Tento softwarový produkt je zdarma. Pro práci s tím existují dobré tutoriály, včetně těch, které napsali tvůrci tohoto produktu.

    Existují také placené verze Arduino IDE. Jedním z nich je program PROGROMINO. Jeho hlavní výhodou je možnost doplňování kódu. Při sestavování programu již nebudete muset hledat informace v referenčních knihách. Samotný program vám nabídne možné možnosti použití konkrétního postupu. Jeho sada obsahuje mnohem více zajímavých funkcí, které v původním programu nejsou a mohou vám usnadnit práci s deskami.

    Konkurenti Arduina

    Tento trh výroby mikrokontrolérů pro vytváření různých elektronických obvodů a robotiky má mnoho fanoušků po celém světě. Tato situace přispívá k tomu, že se na trhu objevují nejen konkurenti, kteří nabízejí podobné produkty. Kromě nich se vyrábí značné množství padělků různé kvality. Některé je velmi těžké odlišit od originálů, protože jsou stejně kvalitní, jiné mají velmi špatný výkon a s originálními produkty nemusí vůbec fungovat.

    Existují dokonce i desky Arduino, které podporují mikroprocesory s interpretry JavaScriptu. Jsou relevantní především pro ty, kteří chtějí místo C používat jazyk Java. Koneckonců je to jednodušší a umožňuje vám dosáhnout výsledků se zvýšenou rychlostí. Tyto desky jsou však dražší než arduino, což je značná nevýhoda.

    Pokud hledáte koníček a zajímáte se o takový směr, jako je elektrotechnika, můžete pro to klidně zvolit Arduino. Tento koníček má mnoho výhod. Budete se intelektuálně rozvíjet, protože tato činnost bude vyžadovat znalosti v různých oblastech.

    Kromě zábavy vám váš koníček pomůže vytvořit spoustu užitečných předmětů, které vám usnadní každodenní život. Pokaždé najdete více a více nových způsobů, jak využít svého koníčka.

    Zvládnout tuto lekci nebude tak těžké, díky přítomnosti velkého množství učebnic a tutoriálů. V budoucnu najdete po celém světě mnoho podobně smýšlejících lidí, kteří se s vámi podělí o své znalosti a dají vám podnět k novým experimentům!

    Základem programovacího jazyka modulu Arduino je jazyk C (spíše C++). Přesněji se tento dialekt jazyka nazývá Processing/Wiring. Dobrý přehled jazyka naleznete v příloze. A chci mluvit víc ne o jazyku, ale o programování.

    Program je sada příkazů, kterým rozumí procesor, procesor vašeho počítače nebo procesor mikrokontroléru modulu Arduino, na tom nezáleží. Procesor čte instrukce a provádí je. Všechny příkazy, kterým procesor rozumí, jsou binární čísla. Jsou to pouze binární čísla a nic jiného. Při provádění aritmetických operací, pro které byl procesor kdysi určen, pracuje procesor s čísly. Binární čísla. A ukázalo se, že příkazy a to, na co odkazují, jsou pouze binární čísla. Takhle. Jak ale procesor rozumí této „hromadě“ binárních čísel?

    Nejprve jsou všechna tato binární čísla zapsána do po sobě jdoucích buněk RAM s adresami. Když nahrajete program a ten se rozběhne, dostane procesor první adresu programu, kam se musí instrukce zapsat. Ty instrukce, které vyžadují operace s čísly od procesoru, mají „identifikační znaky“, například že v dalších dvou paměťových buňkách jsou dvě čísla, která je potřeba sečíst. A čítač, říkejme mu čítač instrukcí, kde je zapsána adresa další instrukce, v tomto případě zvýší adresu tak, že program bude mít další instrukci na této adrese. Pokud program nefunguje správně nebo se zhroutí, procesor může udělat chybu a poté, co přečte číslo místo příkazu, procesor vůbec nedělá to, co by měl dělat, a program „zamrzne“.

    Každý program je tedy posloupnost binárních čísel. A programování je schopnost správně zapisovat správné posloupnosti binárních čísel. Již dávno se k psaní programů začaly používat speciální nástroje zvané programovací jazyky.

    Jakýkoli program však především vyžaduje, abyste jasně rozuměli tomu, co má program dělat a k čemu slouží. Čím jasněji tomu rozumíte, tím snazší je vytvořit program. Malé programy, i když je obtížné určit, které programy jsou malé a které ne, lze považovat za celek. Složitější programy je nejlépe rozdělit na části, které lze považovat za samostatné programy. Takže se lépe vytvářejí, snáze se ladí a testují.

    Nejsem připraven se hádat, ale myslím si, že je pohodlnější spustit program s popisem v běžném jazyce. A v tomto smyslu se domnívám, že programování by se nemělo zaměňovat s psaním programového kódu. Když je program popsán běžnými výrazy, je pro vás snazší například určit, jaký programovací jazyk zvolit pro tvorbu programového kódu.

    Nejbližší věc k psaní programu pomocí binárních čísel je jazyk symbolických instrukcí. Vyznačuje se korespondencí jazykových příkazů s binárními příkazy srozumitelnými pro procesor. Ale kódování programů v assembleru vyžaduje více úsilí a má blíže k umění než k formálním operacím. Jazyky na vysoké úrovni jako Basic nebo C jsou všestrannější a snáze se používají. A po dlouhou dobu se grafický jazyk používá k psaní programů v obecné podobě a nedávno se objevily „překladače“ z tohoto jazyka do jazyka procesorů.

    Kromě obecných programovacích jazyků vždy existovala určitá specializace programovacích jazyků a existovaly specializované jazyky. K poslednímu jmenovanému bych zařadil i programovací jazyk modulu Arduino.

    Vše, co potřebujete sdělit modulu, aby udělal něco, co potřebujeme, je uspořádáno do pohodlné sady příkazů. Ale nejprve, co potřebujeme od Arduina?

    Modul lze použít v různých kapacitách - je srdcem (nebo hlavou) robota, je základem zařízení, je také pohodlným konstruktérem pro zvládnutí práce s mikrokontroléry atd.

    Výše jsme již použili jednoduché programy pro kontrolu připojení modulu k počítači. Někomu se mohou zdát příliš jednoduché, a tudíž nezajímavé, ale jakékoli složité programy se skládají z jednodušších fragmentů, podobných těm, se kterými jsme se již setkali.

    Pojďme se podívat, co nám může říct nejjednodušší program LED Blink.

    int ledPin = 13;

    pinMode(ledPin, OUTPUT);

    digitalWrite(ledPin, HIGH);

    digitalWrite(ledPin, LOW);

    Nejprve si připomeňme, co je to LED. V podstatě se jedná o obyčejnou diodu, u které díky své konstrukci při protékání proudu v propustném směru začne přechod svítit. To znamená, že aby LED svítila, musí jí protékat proud, což znamená, že na LED musí být přivedeno napětí. A aby proud nepřekročil povolenou hodnotu, měl by být do série s LED zapojen rezistor, kterému se říká proudové omezení (viz Příloha A, digitální výstup). Mikrokontrolér, který tvoří základ modulu Arduino, přivádí napětí na LED. Mikrokontrolér má kromě procesoru, který provádí naše příkazy, jeden nebo více I/O portů. Aniž bychom brali v úvahu konkrétní portové zařízení, řekněme toto - když pin portu funguje jako výstup, může být reprezentován jako výstup digitálního mikroobvodu se dvěma stavy, zapnuto a vypnuto (na výstupu je napětí, na výstupu není žádné napětí).

    Ale stejný pin portu může fungovat také jako vstup. V tomto případě může být reprezentován např. jako vstup digitálního mikroobvodu - na vstup je přivedena logická úroveň, vysoká nebo nízká (viz Příloha A, digitální vstup).

    Jak blikáme LED diodou:

    Povolit výstupní pin portu. Zakázat výstup portu.

    Procesor je ale velmi rychlý. Blikání si nestihneme všimnout. Abychom si všimli tohoto blikání, musíme přidat pauzy. to je:

    Povolit výstupní pin portu. Pauza 1 sekundu.

    Zakázat výstup portu.

    Pauza 1 sekundu.

    Toto je náš program. Procesor přečte první příkaz a zapne výstup, rozsvítí se LED. Poté se procesor zastaví a vypne výstup, LED zhasne. Ale zamrkal jen jednou.

    Opakování procesu nebo sady příkazů se v programování nazývá cyklus. Existují různé typy cyklů. Existuje smyčka, která se provede daný počet opakování. Toto je smyčka for. Existují smyčky, které běží, dokud není splněna nějaká podmínka, která je součástí konstrukce jazyka smyčky. A pokud podmínka není nikdy splněna, pak se cyklus provede nekonečněkrát. Je to nekonečný koloběh.

    Nemyslím si, že se mikrokontroléry používají s programy výše uvedeného druhu. To znamená, že se jednou provede několik příkazů a ovladač již nefunguje. Zpravidla pracuje neustále, jakmile je na něj přivedeno napájecí napětí. A proto musí mikrokontrolér pracovat v nekonečné smyčce.

    To říká funkce void loop(), loop je smyčka, uzavřená smyčka. Neexistují žádné podmínky pro ukončení smyčky, a tedy ani podmínky pro její ukončení.

    Kromě toho musíme modulu Arduino sdělit, který pin portu a jak jej chceme použít, pro výstup (OUTPUT) nebo pro vstup (INPUT). K tomuto účelu slouží funkce void setup(), která je pro jazyk Arduino povinná, i když se nepoužívá, a příkaz pinMode() pro nastavení provozního režimu pinu.

    pinMode(ledPin, OUTPUT);

    A přesto konstrukce jazyka používá proměnné k určení výstupního čísla:

    int ledPin = 13;

    Použití proměnných je pohodlné. Pokud se rozhodnete, že místo výstupu 12 použijete výstup 13, provedete změnu pouze na jednom řádku. To platí zejména pro velké programy. Název proměnné lze libovolně zvolit, ale zpravidla se musí jednat pouze o znaky a často je počet znaků omezen. Pokud špatně nastavíte název proměnné, myslím, že vás kompilátor opraví.

    Funkce digitalWrite(ledPin, HIGH) nastaví daný pin do vysokého stavu, to znamená, že pin zapne.

    A zpoždění (1000), jak jste již pochopili, znamená pauzu 1000 milisekund nebo 1 sekundu.

    Zbývá pochopit, co znamenají předpony jako int, void. Jakékoli hodnoty, libovolné proměnné jsou umístěny v paměti, stejně jako příkazy programu. Čísla se často zapisují do paměťových buněk o velikosti 8 bitů. Toto je bajt. Ale bajty jsou čísla od 0 do 255. K zápisu velkých čísel potřebujete dva bajty nebo více, tedy dvě nebo více paměťových buněk. Aby bylo procesoru jasné, jak číslo najít, mají různé typy čísel různé názvy. Takže číslo zvané byte zabere jednu buňku, int (celé číslo, celé číslo) je větší. Kromě toho funkce používané v programovacích jazycích také vracejí čísla. Chcete-li určit, jaký typ čísla má funkce vrátit, uveďte před funkci tento typ vráceného čísla. Některé funkce však nemusí vracet čísla, takovým funkcím předchází void (viz Příloha A, proměnné).

    Tolik zajímavého může vyprávět i ten nejjednodušší program.

    To vše se, doufám, dočtete v příloze. A teď pojďme dělat jednoduché experimenty, jen s tím, co už známe z možností jazyka. Nejprve nahradíme proměnnou int, která zabírá hodně místa v paměti, za byte – jedno místo, jedna paměťová buňka. Pojďme se podívat, co můžeme udělat.

    byte ledPin = 13;

    pinMode(ledPin, OUTPUT);

    digitalWrite(ledPin, HIGH);

    digitalWrite(ledPin, LOW);

    Po zkompilování a načtení programu do modulu nezaznamenáme žádné změny v chodu programu. Pokuta. Poté program změníme tak, abychom zaznamenali změny v jeho práci.

    Za tímto účelem nahradíme číslo ve funkci delay (1000) proměnnou a pojmenujeme ji my_del. Tato proměnná musí být celé číslo, tedy int.

    int my_del = 5000;

    Každý příkaz nezapomeňte ukončit středníkem. Proveďte změny v programu, zkompilujte jej a načtěte do modulu. Poté změňte proměnnou a znovu zkompilujte a načtěte:

    byte my_del = 5000;

    Rozdíl, jsem si jistý, bude patrný.

    Udělejme další experiment se změnou délky pauz. Zkrácení délky přestávek, řekněme, pětkrát. Zastavme se na 2 sekundy a poté také pětkrát zvýšíme. Zastavme se znovu na 2 sekundy. Smyčka, která běží daný počet opakování, se nazývá smyčka for a je napsána takto:

    for (int i = 0; i<5; i++)

    něco, co se provádí ve smyčce for

    K provedení cyklu potřebuje proměnnou, máme ji i, proměnné je třeba dát počáteční hodnotu, kterou jsme jí přiřadili. Pak následuje ukončovací podmínka cyklu, máme i menší než 5. A zápis i++ je zápis zvýšení proměnné o jedničku, což je typické pro jazyk C. Složené závorky omezují sadu příkazů, které mají být provedeny ve smyčce for. Jiné programovací jazyky mohou mít jiné oddělovače pro vymezení bloku kódu funkce.

    Uvnitř smyčky děláme to samé jako předtím, s několika změnami:

    for (int i = 0; i<5; i++)

    digitalWrite(ledPin, HIGH);

    digitalWrite(ledPin, LOW);

    my_del = my_del - 100;

    O změně záznamu pauzy jsme hovořili výše a změny samotné pauzy se dosáhne snížením proměnné o 100.

    Pro druhou smyčku napíšeme stejný blok kódu, ale proměnnou trvání pauzy zvýšíme o 100.

    for (int i = 0; i<5; i++)

    digitalWrite(ledPin, HIGH);

    digitalWrite(ledPin, LOW);

    Všimli jste si, že záznam poklesu pauzy a jejího zvýšení vypadá jinak. To je také vlastnost jazyka C. I když pro přehlednost měl být tento záznam zopakován, pouze se změní znaménko mínus na plus. Takže dostaneme tento program:

    int ledPin = 13;

    int my_del = 1000;

    pinMode(ledPin, OUTPUT);

    for (int i = 0; i<5; i++)

    digitalWrite(ledPin, HIGH);

    digitalWrite(ledPin, LOW);

    for (int i = 0; i<5; i++)

    digitalWrite(ledPin, HIGH);

    digitalWrite(ledPin, LOW);

    Zkopírujeme kód našeho programu do programu Arduin, zkompilujeme jej a nahrajeme do modulu. Změna délky pauz je patrná. A bude to ještě znatelnější, zkuste, jestli se smyčka for provede třeba 8x.

    To, co jsme právě udělali, dělají profesionální programátoři – máme připravený program, který lze snadno upravit tak, aby vyhovoval vašim potřebám nebo přáním. Proto si ponechávají všechny své programy. Což vám radím.

    Co nám v našem experimentu uniklo? Naši práci jsme nekomentovali. Pro přidání komentáře se používá buď dvojité "dopředné" lomítko, nebo jednoduché lomítko, ale s hvězdičkami (viz Příloha A). Radím vám, abyste to udělali sami, protože když se po chvíli vrátíte k programu, snáze jej pochopíte, pokud jsou na tom či onom místě v programu vysvětlení toho, co děláte. A také doporučuji ve složce s každým programem uložit jeho popis v obvyklém jazyce, vytvořený v libovolném textovém editoru.

    Nejjednodušší program "blik LED" může sloužit pro tucet dalších experimentů (i s jednou LED). Zdá se mi, že tato část práce, vymýšlení, co jiného se dá dělat zajímavého, je nejzajímavější. Pokud se podíváte na přílohu, kde je popsán programovací jazyk, do části "ovládání programu", pak můžete nahradit smyčku for jiným druhem smyčky. A vyzkoušejte, jak fungují jiné typy cyklů.

    Přestože procesor mikrokontroléru jako každý jiný umí provádět výpočty (proto byl vynalezen), a toho se využívá např. u zařízení, je pro mikrokontrolér nejcharakterističtější operací nastavení výstupu portu na vysokou resp. nízký stav, to znamená „blikání LED“ jako reakce na vnější události.

    O vnějších událostech se mikrokontrolér dozvídá především podle stavu vstupů. Nastavením pinů portu na digitální vstup jej můžeme sledovat. Pokud je počáteční stav vstupu vysoký a událost způsobí, že vstup klesne na nízkou úroveň, můžeme v reakci na tuto událost něco udělat.

    Nejjednodušším příkladem je tlačítko na vstupu. Když není tlačítko stisknuto, vstup je vysoký. Pokud stisknete tlačítko, vstup se sníží a můžeme „rozsvítit“ LED na výstupu. Při příštím stisknutí tlačítka lze LED diodu vypnout.

    Toto je opět příklad jednoduchého programu. I pro začátečníka se to může zdát nezajímavé. I tento jednoduchý program však může být docela užitečný. Uvedu jen jeden příklad: po stisku tlačítka nebudeme LED svítit, ale blikat (určitým způsobem). A vezměme si LED s infračerveným zářením. V důsledku toho získáme ovládací panel. Zde je takový jednoduchý program.

    Existují rozdíly v seznamu příkladů v různých verzích programu. Můžete se ale podívat do jazykové příručky v aplikaci, kde je příklad a schéma programu (v části příklady nazvané „aplikace“) pro práci se vstupem. Zkopíruji program:

    int ledPin = 13;

    pinMode(ledPin, OUTPUT);

    pinMode(inPin, INPUT);

    if (digitalRead(inPin) == VYSOKÉ)

    digitalWrite(ledPin, HIGH);

    digitalWrite(ledPin, LOW);

    A jak vidíte, úpravou toho starého získáme zcela nový program. Nyní bude LED blikat pouze při stisku tlačítka, které je připojeno k pinu 2. Pin 2 je připojen ke společnému vodiči (zem, GND) přes odpor 10 kΩ. Tlačítko je na jednom konci připojeno k napájecímu napětí + 5V a na druhém konci na pin 2.

    V programu se setkáváme s novou jazykovou konstrukcí if ze sekce ovládání programu. Zní takto: pokud je splněna podmínka (v závorkách), provede se programový blok uzavřený ve složených závorkách. Všimněte si, že v podmínce (digitalRead(inPin) == HIGH) se vstup rovná vysokému stavu pomocí dvou rovnátek! Velmi často se na to ve spěchu zapomene a stav se ukáže jako nesprávný.

    Program lze zkopírovat a nahrát do modulu Arduino. Chcete-li však otestovat fungování programu, musíte provést některé změny v návrhu modulu. Záleží však na typu modulu. Originální modul má patice pro připojení k rozšiřujícím deskám. V tomto případě můžete vložit vhodné pevné vodiče do požadovaných míst konektoru. Můj modul má blade kontakty pro připojení k rozšiřujícím deskám. Buď se poohlédnu po vhodném konektoru, nebo, co je levnější, použiji vhodnou patici pro čip v DIP obalu.

    Druhá otázka je, jak najít výstupy modulu, které jsou v programu použity?

    Obrázek, který jsem vzal z webu, pomůže pochopit tuto otázku: http://robocraft.ru/.

    Rýže. 4.1. Umístění a účel pinů ovladače a modulu Arduino

    Všechny piny na mém modulu CraftDuino jsou označené, takže je snadné najít ten správný pin. Můžete připojit tlačítko a rezistor a zkontrolovat fungování programu. Mimochodem, na zmiňovaném webu RoboCraft je celý proces zobrazen na obrázcích (ale ne úplně takové závěry program používá!). Radím vám podívat se.

    Mnoho mikrokontrolérů má ve svém složení další hardwarová zařízení. Takže Atmega168, na jehož základě je modul Arduino postaven, má UART, vestavěný blok pro komunikaci s jinými zařízeními pomocí sériové výměny dat. Například s počítačem přes COM port. Nebo s jiným mikrokontrolérem pomocí jeho vestavěného bloku UART. K dispozici je také analogově-digitální převodník. A ovladač modulace šířky pulzu.

    Použití posledně jmenovaného ilustruje program, který také zkopíruji z webu RoboCraft. Ale program lze převzít z aplikace. A možná je to v příkladech programu Arduino.

    // Fading LED od BARRAGAN

    int hodnota = 0; // proměnná pro uložení požadované hodnoty

    intledpin = 9; // LED připojená k digitálnímu pinu 9

    // Není třeba volat funkci pinMode

    for(hodnota = 0 ; hodnota<= 255; value+=5) // постепенно зажигаем светодиод

    analogWrite(ledpin, hodnota); // výstupní hodnota (od 0 do 255)

    zpoždění(30); // počkej 🙂

    for(hodnota = 255; hodnota >=0; hodnota-=5) // postupně zhasínat LED

    analogWrite(ledpin, hodnota);

    Jestliže v předchozím programu byla funkce digitalRead(inPin), čtení digitálního vstupu, pro nás novinkou, tak v tomto programu je pro nás nová funkce analogWrite(ledpin, value), ačkoli parametry této funkce jsou již známé proměnné. O použití analogového vstupu, pomocí ADC (analogově-digitální převodník), si povíme později. A nyní se vrátíme k obecným otázkám programování.

    Programování je něco, co je dostupné všem, ale osvojit si programování i jakýkoli programovací jazyk zabere čas. Dnes existuje řada programů, které pomáhají zvládnout programování. A jeden z nich přímo souvisí s modulem Arduino. Jmenuje se Scratch for Arduino, nebo zkráceně S4A. Tento program můžete najít a stáhnout na adrese: http://seaside.citilab.eu/scratch/arduino. Nevím, jak přesně je název programu přeložen, ale „začít od nuly“ se překládá jako „začít od nuly“.

    Stránka projektu S4A má verze pro Windows a Linux, ale pro druhý operační systém je program připraven k instalaci ve verzi distribuce Debian. Nechci tvrdit, že to nejde použít s jinými distribucemi Linuxu, ale nejprve se podívejme, jak se v programu pracuje s modulem Arduino na Windows.

    Po instalaci programu obvyklým způsobem můžete pomocí přepínače jazyků nastavit rozhraní na ruštinu.

    Rýže. 4.2. Přepínač jazyka rozhraní programu

    První ikona panelu nástrojů po kliknutí zobrazí všechny možné jazyky rozhraní programu. Ruský jazyk najdete v sekci ...

    Rýže. 4.3. Seznam jazyků pro použití v rozhraní programu

    …označeno jako „více…“.

    Pokud se nic neudělá, zůstane nápis v pravém okně "Hledácí deska ...", ale modul nebyl nalezen. Chcete-li připojit modul Arduino k programu S4A, musíte si z webu projektu stáhnout něco jiného.

    Rýže. 4.4. Soubor k nahrání do modulu Arduino pro S4A

    Tento soubor není nic jiného než program pro Arduino (Sketch). Tedy textový soubor, který lze zkopírovat do editoru Arduino, zkompilovat a načíst do modulu. Po ukončení programu Arduino můžete spustit program S4A a nyní je modul umístěn.

    Rýže. 4.5. Připojení modulu k programu

    Analogové vstupy modulu nejsou připojeny, stejně jako digitální vstupy, takže zobrazené hodnoty modulu se neustále náhodně mění.

    Každý programovací jazyk má sadu řídicích instrukcí, které poskytují vícenásobné provádění stejného kódu (smyčky), výběr vhodného fragmentu kódu (podmínek) a instrukce pro opuštění aktuálního fragmentu kódu.

    Arduino IDE si většinu požadovaných ovládacích prvků vypůjčilo z C/C++. Jejich syntaxe je shodná s C. Níže stručně popíšeme jejich syntaxi.

    if prohlášení

    Příkaz if umožňuje spustit určitý fragment programu v závislosti na výsledku kontroly určité podmínky. Pokud je podmínka splněna, provede se programový kód, pokud podmínka splněna není, bude programový kód přeskočen. Syntaxe příkazu if je následující:

    If(podmínka) ( příkaz1; příkaz2; )

    Podmínkou může být jakékoli srovnání proměnné nebo hodnoty vrácené funkcí. Hlavním kritériem pro podmínku if je, že odpověď musí být vždy buď pravdivá (pravda) nebo nepravda (nepravda). Příklady podmínek pro příkaz if:

    if(a!=2) ( ) if(x<10) { } if(znak==’B’) { }

    Uvnitř závorek, které jsou napsány uvnitř podmínky, můžete spustit kód.

    Lidé, kteří se začínají učit programování, často dělají chybu, když hodnotu dané proměnné dávají rovnítko mezi hodnotu jednoho znaku „=“. Takový záznam jednoznačně indikuje přiřazení hodnoty proměnné, a proto bude podmínka vždy „true“, tedy bude splněna. Kontrola, zda se proměnná rovná určité hodnotě, je vždy označena dvojitým rovnítkem (==).

    Stav funkce můžete použít jako podmínku, například:

    If(init()) ( Serial.print("ok"); )

    Výše uvedený příklad by byl proveden následovně: prvním krokem je volání funkce init(). Tato funkce vrací hodnotu, která bude interpretována jako „true“ nebo „false“. Podle výsledku porovnání se odešle text "ok" nebo se neodešle nic.

    pokud...jiné prohlášení

    Rozšířený příkaz if je příkaz if….else. Zajišťuje, že jedna část kódu se provede, když je podmínka pravdivá (true), a druhá část kódu se provede, pokud podmínka není pravdivá (nepravda). Syntaxe příkazu if….else je následující:

    If (podmínka) ( // příkaz A ) else ( // příkaz B )

    Příkazy "A" se provedou pouze při splnění podmínky, příkaz "B" se provede při nesplnění podmínky. Současné provedení příkazu "A" a "B" není možné. Následující příklad ukazuje, jak použít syntaxi if...else:

    If (init()) ( Serial.print("ok"); ) else ( Serial.print("error"); )

    Tímto způsobem můžete zkontrolovat správné provedení funkce a informovat o tom uživatele.

    Obvyklá praxe je negovat podmínku. Je to proto, že funkce, která se provede správně, vrátí 0, zatímco funkce, která z nějakého důvodu selže, vrátí nenulovou hodnotu.

    Vysvětlení této „komplikace života“ je jednoduché. Pokud je funkce provedena správně, pak je to jediná informace, kterou potřebujeme. V případě chyby se někdy vyplatí pochopit, co se pokazilo, proč nebyla funkce provedena správně. A zde na pomoc přicházejí čísla, která se liší od nuly, to znamená, že pomocí digitálních kódů můžeme určit typ chyby. Například 1 - problém se čtením nějaké hodnoty, 2 - nedostatek místa v paměti nebo na disku atd.

    Poslední upravený příklad ukazuje, jak zavolat funkci, která při správném provedení vrátí nulu:

    If (!init()) ( Serial.print("ok"); ) else ( Serial.print("error"); )

    příkaz switch case

    Příkaz if umožňuje zkontrolovat pouze jednu podmínku. Někdy je nutné provést některou z akcí v závislosti na vrácené nebo přečtené hodnotě. K tomu je ideální příkaz switch multiple choice. Syntaxe příkazu switch je uvedena níže:

    Switch (var) ( case 1: // instrukce pro var=1 break; case 2: // instrukce pro var=2 break; default: // instrukce ve výchozím nastavení (pokud se var liší od 1 a 2) )

    V závislosti na hodnotě proměnné var se instrukce provádějí v určitých blocích. Označení případu znamená začátek bloku pro zadanou hodnotu. Například případ 1: znamená, že daný blok bude proveden pro hodnotu proměnné var rovnou jedné.

    Každý blok musí být ukončen příkazem break. Přeruší další provádění příkazu switch. Pokud je příkaz break vynechán, budou instrukce provedeny v následujících blocích až po příkaz break. Výchozí popisek je nepovinný, stejně jako jiný v příkazu if. Instrukce ve výchozím bloku se provádějí pouze tehdy, když hodnota proměnné var neodpovídá žádnému vzoru.

    Často se stává, že stejné instrukce musí být provedeny pro jednu z několika hodnot. Toho lze dosáhnout takto:

    Přepínač (x) ( případ 1: // příkaz pro přerušení x=1; případ 2: případ 3: případ 5: // příkaz pro přerušení x=2 nebo 3 nebo 4; případ 4: // příkaz pro přerušení x=4 ; případ 6: // instrukce pro přerušení x=6; výchozí: // výchozí instrukce (pokud se x liší od 1,2,3,4,5,6) )

    V závislosti na hodnotě proměnné x se provede příslušný blok instrukcí. Opakování případu 2: případu 3: případu 5: informuje kompilátor, že pokud má proměnná x hodnotu 2 nebo 3 nebo 5, bude proveden stejný kus kódu.

    pro vyjádření

    Příkaz for se používá k opakovanému provádění stejného kódu. Často je nutné provést stejné instrukce, pouze změnit hodnotu nějaké proměnné. Smyčka for je pro to ideální. Syntaxe příkazu je následující:

    int i; for(i=0;i<10;i++) { // инструкции для выполнения в цикле }

    První parametr uvedený v příkazu for je počáteční hodnota proměnné. Dalším prvkem je kontrola podmínky pro pokračování v provádění smyčky. Cyklus se provádí, dokud je splněna podmínka. Posledním prvkem je změna hodnoty proměnné. Nejčastěji jeho hodnotu zvyšujeme nebo snižujeme (dle potřeby). V tomto příkladu budou instrukce obsažené ve smyčce provedeny při i=0…9.

    Proměnná použitá ve smyčce je často deklarována na stejném místě:

    For(int i=0;i<10;i++) { // инструкции для выполнения в цикле }

    Proměnnou, která se používá k počítání následných kroků smyčky, lze uvnitř ní použít k volání funkce s příslušnými parametry.

    For(int i=10;i>0;i—) ( Serial.print(i); // čísla 10,9,8,7,6,5,4,3,2,1 budou odeslána)

    zatímco prohlášení

    Smyčka for je ideální tam, kde chceme počítat. V situaci, kdy je nutné provést určité akce v důsledku nějaké události, která není nutně předvídatelná (například čekáme na stisk tlačítka), pak můžeme použít příkaz while, který provede blok příkazů pokud je splněna podmínka. Syntaxe příkazu while je následující:

    While(condition) ( // blok příkazů k provedení)

    Je důležité, aby kontrola stavu proběhla na začátku cyklu. Může se stát, že příkazy uvnitř cyklu while nebudou nikdy provedeny. Je také možné vytvořit nekonečnou smyčku. Podívejme se na dva příklady:

    intx=2; while(x>5) ( Serial.print(x); ) —————————————- int y=5; while(y>0) ( Serial.print(y); )

    První blok příkazů uvnitř while nebude nikdy proveden. Proměnná x má hodnotu dva a nebude větší než 5. Ve druhém příkladu máme co do činění s nekonečnou smyčkou. Proměnná "y" má hodnotu 5, tedy větší než nula. Uvnitř smyčky nedochází k žádné změně proměnné 'y', takže smyčka nikdy neskončí.

    To je častá chyba, když zapomeneme změnit parametr, který způsobí ukončení smyčky. Následují dva platné příklady použití smyčky while:

    intx=0; zatímco (x<10) { //блок инструкций x++; } —————————————- while(true) { if(условие) break; // блок инструкций }

    V prvním příkladu jsme se postarali o změnu hodnoty proměnné, která je zaškrtnuta v podmínce. V důsledku toho cyklus nakonec skončí. Ve druhém příkladu byla záměrně vytvořena nekonečná smyčka. Tato smyčka je ekvivalentní funkci loop() v Arduino IDE. Navíc je uvnitř smyčky zavedena kontrola stavu, po které smyčka končí příkazem break.

    do...při prohlášení

    Variací smyčky while je smyčka do...while. Kromě syntaxe se liší v místě, kde se podmínka kontroluje. V případě do...while se podmínka zkontroluje po provedení bloku příkazů. To znamená, že blok příkazů v těle cyklu bude proveden alespoň jednou. Následuje syntaxe příkazu do...while:

    Do ( // blok příkazů ) while(podmínka)

    Vše, co je napsáno o příkazu while, platí také pro příkaz do...while. Následuje příklad použití cyklu do...while:

    intx=10; do ( // blok instrukce x—; ) while(x>0); —————————————- do ( // blok instrukce if(condition) break; ) while(true);

    příkaz break

    Příkaz break vám umožňuje opustit smyčku (do...while, for, while) a ukončit volbu switch. V následujícím příkladu zvažte provedení příkazu break:

    Pro (i=0;i<10;i++) { if(i==5) break; Serial.print(i); }

    Cyklus by měl být proveden pro čísla od 0 do 9, ale pro číslo 5 je splněna podmínka, která spustí příkaz break. Tím opustíte smyčku. Výsledkem je, že na sériový port (Serial.print) budou odeslána pouze čísla 0,1,2,3,4.

    pokračování prohlášení

    Operátor continue způsobí, že instrukce smyčky (do...while, for, while) se zastaví pro aktuální hodnotu a přejdou k dalšímu kroku smyčky. Následující příklad ukazuje, jak funguje příkaz continue:

    Pro (i=0;i<10;i++) { if(i==5) continue; Serial.print(i); }

    Jak vidíte, smyčka se provede pro hodnotu od 0 do 9. Pro hodnotu 5 se provede příkaz continue, v důsledku čehož se instrukce za tímto příkazem neprovedou. V důsledku toho budou čísla 0,1,2,3,4,6,7,8,9 odeslána na sériový port (Serial.print).

    návratový výpis

    Příkaz return ukončí provádění volané funkce a vrátí hodnotu určitého typu. Jako parametr příkazu můžete zadat číslo, znak nebo proměnnou určitého typu. Je důležité, aby návratová hodnota odpovídala typu deklarované funkce. Následující příklad ukazuje, jak použít příkaz return:

    Int checkSensor()( if (analogRead(0) > 400) ( // čtení analogového vstupu návrat 1; // Pro hodnoty větší než 400 je vrácena 1 else( return 0; // pro ostatní je vrácena 0) )

    Jak vidíte, v jedné funkci můžete použít více příkazů return, ale vždy bude fungovat pouze jeden z nich. Je povoleno používat příkaz return bez parametrů. To umožňuje předčasně ukončit funkci, která nevrací žádnou hodnotu.

    Void název_funkce() ( příkaz1; if(x==0) return; příkaz2; příkaz3; )

    Ve výše uvedeném příkladu se příkaz1 provede při každém volání funkce. Provedení instrukce2 a instrukce3 závisí na výsledku příkazu if. Pokud je podmínka splněna (true), provede se příkaz return a funkce se ukončí.

    V případě, že podmínka není splněna, neprovede se ani příkaz return, ale provedou se instrukce instrukce2 a instrukce3 a poté funkce ukončí svou práci.

    goto prohlášení

    Z ideologických důvodů by měl být tento popis přeskočen... Příkaz goto je příkaz, který by se v běžném programování neměl používat. Způsobuje složitost kódu a je to špatný zvyk programování. Důrazně doporučujeme, abyste tento příkaz ve svých programech nepoužívali. Vzhledem k tomu, že goto je v oficiální dokumentaci na webu arduino.cc, uvedeme jeho stručný popis. Syntaxe příkazu goto je:

    …. goto štítek; // skok na řádek označený 'metka' ….. …. …. metka: // štítek, kde bude program dále fungovat ...

    Příkaz umožňuje skok na určený štítek, tedy na místo v programu.

    Učení mikrokontrolérů se zdá být něco složitého a nepochopitelného? Před příchodem Arudina to opravdu nebylo jednoduché a vyžadovalo to určitou sadu programátorů a dalšího vybavení.

    Jedná se o druh elektronického návrháře. Prvotním cílem projektu je umožnit lidem, aby se snadno naučili programovat elektronická zařízení a přitom elektronické části věnovali minimální čas.

    Montáž nejsložitějších obvodů a spojování desek lze provádět bez páječky, ale pomocí propojek s odnímatelnými samčími a samičími spoji. Tímto způsobem lze připojit jak nástavce, tak rozšiřující desky, které se v lexikonu arduinoschikov nazývají jednoduše „Štíty“ (štít).

    Jaká je první deska Arduino, kterou si jako začátečník koupíte?

    Je považována za základní a nejoblíbenější desku. Tento poplatek je přibližně velký jako kreditní karta. Docela velké. Většina štítů, které jsou v prodeji, se k němu perfektně hodí. Na desce jsou zdířky pro připojení externích zařízení.

    V tuzemských obchodech pro rok 2017 se jeho cena pohybuje kolem 4-5 dolarů. Na moderních modelech je jeho srdcem Atmega328.

    Obrázek Arduino desky a dekódování funkcí každého pinu, Arduino UNO pinout

    Mikrokontrolér na této desce je dlouhý čip v pouzdře DIP28, což znamená, že má 28 pinů.

    Další nejoblíbenější deska stojí téměř dvakrát levněji než předchozí - 2-3 dolary. Toto je poplatek. Současné desky jsou postaveny na stejném Atmega328, funkčně jsou podobné UNO, rozdíly jsou ve velikosti a řešení přizpůsobení USB, o tom později. Dalším rozdílem je, že pro připojení zařízení k desce jsou k dispozici zástrčky ve formě jehel.

    Počet pinů (noh) této desky je stejný, ale vidíte, že mikrokontrolér je vyroben v kompaktnějším pouzdru TQFP32, v balení jsou přidány ADC6 a ADC7, další dvě „extra“ nohy duplikují napájecí sběrnici . Jeho rozměry jsou poměrně kompaktní – zhruba na velikost vašeho palce.

    Třetí nejoblíbenější deska je, nemá USB port pro připojení k počítači, jak se připojení provádí, řeknu trochu později.

    Jde o nejmenší desku ze všech recenzovaných, jinak je podobná předchozím dvěma a jejím srdcem je stále Atmega328. Nebudeme uvažovat o dalších deskách, protože toto je článek pro začátečníky a srovnání desek je téma na samostatný článek.

    V horní části schéma zapojení USB-UART, pin “GRN” je zapojen do resetovacího obvodu mikrokontroléru, dá se to nazvat jinak, proč je to potřeba se dozvíte později.

    Pokud je UNO užitečné pro krájení, pak jsou Nano a Pro Mini dobré pro finální verze vašeho projektu, protože zabírají málo místa.

    Jak připojit Arduino k počítači?

    Arduino Uno a Nano jsou připojeny k počítači přes USB. Zároveň chybí hardwarová podpora USB portu, je zde použito řešení obvodů pro převod úrovní, obvykle nazývané USB-to-Serial nebo USB-UART (rs-232). Zároveň je do mikrokontroléru naflashován speciální zavaděč Arduino, který umožňuje problikávání těchto sběrnic.

    Arduino Uno implementuje toto zapojení na mikrokontroléru s podporou USB - ATmega16U2 (AT16U2). Ukazuje se, že pro flashování hlavního mikrokontroléru je potřeba další mikrokontrolér na desce.

    V Arduino Nano je to implementováno čipem FT232R nebo jeho protějškem CH340. Toto není mikrokontrolér - je to převodník úrovní, tato skutečnost umožňuje snadno postavit Arduino Nano od nuly vlastníma rukama.

    Obvykle se ovladače nainstalují automaticky při připojení desky Arduino. Když jsem si však koupil čínskou kopii Arduina Nano, zařízení bylo rozpoznáno, ale nefungovalo, na převodník byla nalepena kulatá nálepka s datem vydání, nevím, jestli to bylo uděláno schválně, ale když jsem to sloupnul, viděl jsem označení CH340.

    Předtím jsem se s tím nesetkal a myslel jsem si, že všechny převodníky USB-UART byly namontovány na FT232, musel jsem si stáhnout ovladače, dají se velmi snadno najít na dotaz "Ovladače Arduino ch340". Po jednoduché instalaci - vše fungovalo!

    Mikrokontrolér lze také napájet přes stejný USB port, tzn. pokud jej připojíte k adaptéru mobilního telefonu, váš systém bude fungovat.

    Co mám dělat, když na desce není žádné USB?

    Deska Arduino Pro Mini je menší. Toho bylo dosaženo odstraněním USB konektoru pro firmware a stejného převodníku USB-UART. Proto je nutné jej zakoupit samostatně. Nejjednodušší převodník na CH340 (nejlevnější), CPL2102 a FT232R, se prodává za 1 $.

    Při nákupu věnujte pozornost tomu, pro jaké napětí je tento adaptér určen. Pro mini se dodává ve verzi 3,3 a 5 V, na měničích je často propojka pro přepínání napájecího napětí.

    Při flashování Pro Mini je těsně před jeho spuštěním potřeba stisknout RESET, ale u převodníků s DTR to není nutné, schéma zapojení je na obrázku níže.

    Jsou spojeny speciálními svorkami "Mother-Mother" (female-female).

    Vlastně všechna připojení lze provést pomocí takových svorek (Dupont), jsou na obou stranách se zásuvkami i se zástrčkami a na jedné straně je zásuvka a na druhé zástrčka.

    Jak psát programy pro Arduino?

    Pro práci s náčrty (název firmwaru v jazyce arduino) existuje speciální integrované prostředí pro vývoj Arduino IDE, které si můžete zdarma stáhnout z oficiálních stránek nebo z jakéhokoli tematického zdroje, obvykle existují žádné problémy s instalací.

    Takto vypadá rozhraní programu. Programy můžete psát ve zjednodušeném jazyce C AVR speciálně vyvinutém pro Arduino, ve skutečnosti jde o sadu knihoven s názvem Wiring, stejně jako v čistém C AVR. Jeho použití usnadňuje kód a urychluje jeho práci.

    V horní části okna je známé menu, kde můžete otevřít soubor, nastavení, vybrat desku, se kterou pracujete (Uno, Nano a mnoho, mnoho dalších) a také otevřít projekty s hotovými příklady kódu. Níže je sada tlačítek pro práci s firmwarem, přiřazení kláves uvidíte na obrázku níže.

    Ve spodní části okna je oblast pro zobrazení informací o projektu, o stavu kódu, firmwaru a přítomnosti chyb.

    Základy programování v Arduino IDE

    Na začátku kódu musíte deklarovat proměnné a připojit další knihovny, pokud existují, to se provádí následovně:

    #include biblioteka.h; // zahrnout knihovnu s názvem "Biblioteka.h"

    #define proměnná 1234; // Deklarujte proměnnou s hodnotou 1234

    Příkaz Define umožňuje kompilátoru vybrat si typ proměnné sám, ale můžete jej nastavit ručně, například celé číslo int nebo plovoucí desetinnou čárku.

    int led = 13; // vytvořil proměnnou "led" a přiřadil jí hodnotu "13"

    Program může definovat stav pinu jako 1 nebo 0. 1 je logická jednotka, pokud je pin 13 1, pak se napětí na jeho fyzické noze bude rovnat napájecímu napětí mikrokontroléru (pro arduino UNO a Nano - 5 V )

    Digitální signál se zapisuje pomocí příkazu digitalWrite(pin, value), například:

    digitalWrite(led, high); //zaznamenejte jednotku do pinu 13 (deklarovali jsme to výše) log. Jednotky.

    Jak jste mohli pochopit, odvolání k portům jde podle číslování na desce, odpovídajícího čísla. Zde je příklad podobný předchozímu kódu:

    digitalWrite(13, vysoká); // nastavit pin 13 na jedničku

    Často požadovaná funkce časového zpoždění je volána pomocí příkazu delay(), jehož hodnota je udávána v milisekundách, mikrosekundy jsou dosaženy pomocí

    delayMicroseconds() Delay(1000); //mikrokontrolér bude čekat 1000 ms (1 sekunda)

    Nastavení portu pro vstup a výstup se nastavují ve funkci void setup() pomocí příkazu:

    pinMode(NOMERPORTA, OUTPUT/INPUT); // argumenty - název proměnné nebo číslo portu, vstup nebo výstup na výběr

    Pochopení prvního programu Blink

    Jako jakési „Ahoj světe“ pro mikrokontroléry existuje program pro blikání LED, podívejme se na jeho kód:

    Na začátku jsme příkazem pinMode řekli mikrokontroléru, aby k výstupu přiřadil port s LED. Již jste si všimli, že kód nedeklaruje proměnnou “LED_BUILTIN”, faktem je, že v deskách Uno, Nano a dalších z výroby je na pin 13 připojena vestavěná LED a ta je na desce připájena. Můžete jej použít pro indikaci ve vašich projektech nebo pro jednoduché testování vašich flasher programů.

    Dále nastavíme pin, ke kterému je LED připájena, na jednu (5 V), další řádek nechá MK čekat 1 sekundu a poté nastaví pin LED_BUILTIN na nulu, počká sekundu a program se opakuje v kruhu, takže když je LED_BUILTIN 1 - LED (a jakákoli další zátěž připojená k portu) je povolena, při nastavení na 0 je deaktivována.

    Přečtěte hodnotu z analogového portu a použijte načtená data

    Mikrokontrolér AVR Atmega328 má vestavěný 10bitový analogově-digitální převodník. 10bitový ADC umožňuje číst hodnotu napětí od 0 do 5 voltů v krocích po 1/1024 celé amplitudy signálu (5 V).

    Aby to bylo jasnější, zvažte situaci, řekněme, že hodnota napětí na analogovém vstupu je 2,5 V, což znamená, že mikrokontrolér načte hodnotu z pinu "512", pokud je napětí 0 - "0", a pokud je 5 V - (1023). 1023 - protože počítání začíná od 0, tzn. 0, 1, 2, 3 atd. celkem až 1023 - 1024 hodnot.

    Zde je návod, jak to vypadá v kódu, s použitím standardního náčrtu „analogInput“ jako příkladu.

    int sensorPin = A0;

    int ledPin = 13;

    int sensorValue = 0;

    pinMode(ledPin, OUTPUT);

    sensorValue = analogRead(sensorPin);

    digitalWrite(ledPin, HIGH);

    delay(sensorValue);

    digitalWrite(ledPin, LOW);

    delay(sensorValue);

    Deklarujeme proměnné:

      Ledpin - nezávisle přiřadit pin s vestavěnou LED k výstupu a dát individuální název;

      sensorPin - analogový vstup, nastavený podle označení na desce: A0, A1, A2 atd.;

      sensorValue - proměnná pro uložení načtené celočíselné hodnoty a další práci s ní.

    Kód funguje takto: sensorValue ukládá analogovou hodnotu načtenou z sensorPin (příkaz analogRead). - zde končí práce s analogovým signálem, pak je vše jako v předchozím příkladu.

    Zapíšeme jednotku do ledPin, LED se rozsvítí a čekáme po dobu rovnající se hodnotě sensorValue, tzn. 0 až 1023 milisekund. Zhasneme LED a znovu počkáme po tuto dobu, po které se kód opakuje.

    Pozicí potenciometru tedy nastavíme frekvenci blikání LED.

    mapová funkce pro Arudino

    Ne všechny funkce pro akční členy (o žádných nevím) podporují jako argument "1023", např. servo je omezeno úhlem natočení, tedy na půl otáčky (180 stupňů) (půl otáčky) servomotoru , maximální argument funkce je "180"

    Nyní o syntaxi: map (hodnota, kterou překládáme, minimální hodnota vstupu, maximální hodnota vstupu, minimální výstup, maximální výstupní hodnota).

    V kódu to vypadá takto:

    (map(analogRead(pot), 0, 1023, 0, 180));

    Odečteme hodnotu z potenciometru (analogRead (pot)) od 0 do 1023 a na výstupu dostaneme čísla od 0 do 180

    Hodnoty mapy velikosti:

    V praxi to aplikujeme na kód stejného serva, podívejte se na kód z Arduino IDE, pokud si pozorně přečtete předchozí části, pak to nevyžaduje vysvětlení.

    A schéma zapojení.

    Arduino je velmi šikovný nástroj pro výuku práce s mikrokontroléry. A pokud použijete čistý C AVR, nebo jak se někdy říká „Pure C“ – výrazně snížíte váhu kódu a vejde se ho více do paměti mikrokontroléru, ve výsledku získáte vynikající tovární ladicí deska s možností flashování přes USB.

    Líbí se mi arduino. Je škoda, že jí mnoho zkušených programátorů mikrokontrolérů bezdůvodně nadává, že je příliš zjednodušená. V zásadě je zjednodušený pouze jazyk, ale nikdo vás nenutí ho používat, navíc můžete mikrokontrolér flashnout přes ICSP konektor a nahrát si tam požadovaný kód bez zbytečných bootloaderů.

    Pro toho, kdo si chce hrát s elektronikou, bude jako pokročilý konstruktér perfektní a zkušeným programátorům se jako deska, která nevyžaduje montáž, bude hodit také!

    Více informací o Arduinu a vlastnostech jeho použití v různých obvodech naleznete v e-booku - .

    Ardublock je grafický programovací jazyk pro Arduino určený pro začátečníky. Toto prostředí se docela snadno používá, snadno se instaluje, je téměř kompletně přeloženo do ruštiny. Vizuálně vytvořený program připomínající bloky...

    Přerušení jsou velmi důležitým mechanismem Arduina, který umožňuje externím zařízením interakci s ovladačem, když nastanou různé události. Instalací hardwarové obsluhy přerušení do náčrtu můžeme reagovat na zapnutí nebo vypnutí tlačítka, stisknutí klávesnice, ...

    Serial.print() a Serial.println() jsou hlavní funkce Arduina pro přenos informací z desky Arduino do počítače přes sériový port. Nejoblíbenější desky Arduino Uno, Mega, Nano nemají vestavěný displej, takže...

    Je možné dělat arduino projekty bez samotné arduino desky? Ukazuje se docela. Díky četným online službám a programům, které mají své vlastní jméno: Arduino emulátor nebo simulátor. Nejoblíbenějšími zástupci takových programů jsou ...

    Serial begin je extrémně důležitá instrukce Arduina, umožňuje řadiči navázat spojení s externími zařízeními. Nejčastěji je takovým „externím zařízením“ počítač, ke kterému připojujeme Arduino. Proto je Serial begin intenzivnější...

    Globální proměnná v Arduinu je proměnná, jejíž rozsah zasahuje do celého programu, je viditelná ve všech modulech a funkcích. V tomto článku se podíváme na několik příkladů použití globálních proměnných,...

    Pole Arduino jsou jazykový prvek aktivně používaný programátory pro práci se sadami stejného typu dat. Pole existují téměř ve všech programovacích jazycích a Arduino není výjimkou, jehož syntaxe je velmi podobná ...