Nízkoúrovňové programovanie Arduina. Programovací jazyk Arduino

  • 21.09.2019

Prvá vec, ktorú treba začať pri ovládaní Arduina, je zakúpenie ladiacej dosky (bolo by pekné okamžite zakúpiť dosku s obvodmi atď.). Aké typy Arduino dosiek sú na trhu, som už popísal. Ak ste článok ešte nečítali, odporúčam vám ho prečítať. Ak sa chcete naučiť základy, vyberte si štandardnú dosku Arduino Uno (originál alebo dobrú čínsku kópiu - je to na vás). Pri prvom pripájaní originálnej dosky by nemali byť žiadne problémy, ale s „číňanom“ sa v tom budete musieť pohrabať hlbšie (nebojte sa, všetko vám ukážem a poviem).

Arduino pripojíme k počítaču pomocou USB kábla. LED na doske by sa mala rozsvietiť " ON". V správcovi zariadení sa zobrazí nové zariadenie " Neznáme zariadenie". Je potrebné nainštalovať ovládač. Tu pridám malú nejednoznačnosť(mačka rozptyľovala - nepamätal som si, pre ktorého z vodičov som sa rozhodol " neznámy problém so zariadením».

Vopred stiahnuté a rozbalené softvérové ​​prostredie Arduino ( arduino-1.6.6-okná). Potom som si stiahol tento. Je samorozbaľovací. Spustil súbor CH341SER.EXE... Vybrali inštalácia (INSTALL)... Po inštalácii sa objavila správa, kliknite na „ OK“(Nestihol som si to prečítať).

Potom som prešiel do vlastností stále „neznámeho zariadenia“ a vybral som tlačidlo „Aktualizovať ovládač“. Vybral som možnosť „Inštalovať zo zadaného miesta“ – označil priečinok s rozbaleným softvérovým prostredím Arduino. A hľa - všetko fungovalo dobre ...

Spustíme program Arduino (v mojom prípade 1.6.6) a povolíme prístup.

Všetky projekty (programy) pre Arduino pozostávajú z dvoch častí: neplatné nastavenie a prázdna slučka. neplatné nastavenie sa vykonáva iba raz a prázdna slučka beží znova a znova.

Pred pokračovaním sú potrebné dva kroky:

- v softvéri Arduino uveďte, ktorú dosku používate. Nástroj-> doska-> Arduino Uno. Ak je značka už na tabuli, ktorú potrebujete, je to dobré, ak nie, umiestnime značku.

- v softvérovom prostredí uveďte, ktorý sériový port používate na komunikáciu s doskou. Nástroj-> port-> COM3. Ak je značka už na porte, je to dobré, ak nie, značku dáme. Ak máte v sekcii portov viac ako jeden port, ako viete, ktorý z nich sa používa na pripojenie k doske? Vezmeme dosku a odpojíme od nej drôt. Vraciame sa do prístavov a vidíme, ktorý zmizol. V mojom prípade sa karta „porty“ stala neaktívnou.

Znova pripojte kábel USB.

Pre prvý program nie sú potrebné žiadne ďalšie moduly. Rozsvietime LED, ktorá je už namontovaná na doske (na pine 13 mikrokontroléra).

Najprv nakonfigurujme pin 13 (vstup alebo výstup).

Ak to chcete urobiť, zadajte do bloku „ neplatné nastavenie»Príkaz pinMode , v zátvorkách uvádzame parametre (13, VÝSTUP) (O aký záver ide, Spôsob činnosti). Softvérové ​​prostredie zvýrazňuje slová/príkazy vhodnou farbou písma.

Choď do bloku" prázdna slučka„A zadajte príkaz digitalWrite s parametrami (13, VYSOKÁ) .


Prvý program je pripravený, teraz ho zostáva nahrať do mikrokontroléra. Stlačte tlačidlo UPLOAD.

LED sa rozsvietila. Ale nebuďte tak skeptickí, pokiaľ ide o jednoduchosť prvého programu. Práve ste zvládli svoj prvý ovládací príkaz. Koniec koncov, namiesto LED diódy môžete pripojiť akúkoľvek záťaž (či už osvetlenie v miestnosti alebo servo, ktoré preruší prívod vody), ale o tom všetkom si povieme neskôr ...

Rozsvietili sme LED, trochu svietila, je čas ju vypnúť. Aby sme to dosiahli, upravíme program, ktorý sme napísali. Namiesto " VYSOKÝ "písať" NÍZKA ».


Stlačte tlačidlo UPLOAD. LED je vypnutá.

Už sme sa zoznámili s konceptom "", je čas ho použiť. Ďalšie programy budú čoraz zložitejšie a práca na ich zmene zaberie stále viac času, ak zachováme tento štýl kódovania.

Pozeráme sa na program (znova zapnite LED). Nastavme pin číslo mikrokontroléra nie číslom 13 , ale premenná, ktorej bude priradená hodnota zodpovedajúceho výstupu (v našom prípade 13). V budúcnosti bude veľmi výhodné zmeniť hodnoty premenných na začiatku programu namiesto tápania v kóde pri hľadaní tých miest, kde je potrebné hodnoty nahradiť.

Vytvorte globálnu premennú int LED_pin = 13; (typ premennej, názov premennej, priradená hodnota).


Stlačte tlačidlo UPLOAD. LED svieti. Všetko funguje perfektne.

V tejto lekcii sa okrem zapínania / vypínania LED naučíme aj ako ho blikať.

Ak to chcete urobiť, zadajte druhý príkaz " digitalWrite» s parametrami (LED_pin, LOW).


Stlačte tlačidlo UPLOAD. A čo vidíme? LED sa rozsvieti „až po poschodie objednávky“. Dôvod spočíva v tom, že doba spínania dvoch stavov ( VYSOKÝ a NÍZKA ) je zanedbateľný a ľudské oko toto prepínanie nedokáže zachytiť. Je potrebné zvýšiť čas strávený LED v jednom zo stavov. Ak to chcete urobiť, napíšte príkaz meškanie s parametrom (1000 ) ... Latencia v milisekundách: 1 000 milisekúnd – 1 sekunda. Algoritmus programu je nasledovný: zapnite LED - počkajte 1 sekundu, vypnite LED - počkajte 1 sekundu atď.


Stlačte tlačidlo UPLOAD. LED dióda začala blikať. Všetko funguje.

Dokončime program vytvorením premennej, ktorej bude priradená hodnota, ktorá je zodpovedná za trvanie oneskorenia.


Stlačte tlačidlo UPLOAD. LED dióda bliká rovnako ako blikanie.

Poďme dokončiť program, ktorý sme napísali. Úlohy sú nasledovné:

  • LED svieti na 0,2 sekundy a vypnutá na 0,8 sekundy;
  • LED dióda svieti 0,7 sekundy a zhasne 0,3 sekundy.

V programe sú vytvorené 2 premenné, ktoré sú zodpovedné za časové oneskorenia. Jeden definuje prevádzkový čas zapnutej LED a druhý určuje prevádzkový čas vypnutia LED.

Ďakujem za tvoju pozornosť. Do skorého videnia!

Arduino je v skutočnosti vývoj jedinečných projektov pre všetky príležitosti. Ako som už písal, Arduino je akási doska, na ktorej je umiestnený mikrokontrolér, ktorý sa dá bez problémov naprogramovať.

Konečným cieľom týchto manipulácií je poskytnúť ľahké ovládanie mnohých externých zariadení... S vonkajším svetom táto doska interaguje prostredníctvom mnohých doplnkov:

  • senzory,
  • LED diódy,
  • motory,
  • internet
  • atď.

To z neho urobí pomerne univerzálnu platformu pre rôzne projekty rôznych úrovní. V súčasnosti existuje pomerne veľa veľmi odlišných mikrokontrolérov, medzi ktorými je obzvlášť populárny Arduino, ktorý je spojený s aktívnym umiestnením najúžasnejších projektov a vývoja v sieti.

Aby ste mohli jednoducho implementovať jeden z miliónov nápadov, môžete jednoducho použiť najrelevantnejšie informácie, ktoré sú dostupné nezávisle na mnohých stránkach. Nižšie je uvedený príklad implementácie jedného takého nápadu - vianočného zvončeka, ktorý možno ovládať:

Ako na to, si rozoberieme v jednej z nasledujúcich lekcií.

V prípade, že nie sú ani malé skúsenosti s prácou s mikrokontrolérmi (programovanie a nastavenia), vďaka zvláštnostiam sa môžete ľahko naučiť sami vykonávaním relatívne krátkych experimentov. Nižšie navrhujem analyzovať niektoré možnosti Arduina, príklady toho, kde je najlepšie použiť tento jedinečný konštruktor.

Arduino skice

V skutočnosti sa program pre mikrokontrolér tohto typu nazýva skica... Každý takýto program pozostáva priamo z dvoch hlavných funkcií.

Nastaviť

Nastavenie () - za predpokladu, že v rámci tejto funkcie bude môcť užívateľ nastaviť všetky kľúčové nastavenia.

Napríklad sa určuje, ktoré piny budú v budúcnosti fungovať na výstupe alebo vstupe, určenie zapojenia konkrétnych knižníc, dokonca aj inicializácia premenných, to všetko určuje použitie tejto funkcionality.

Spustenie sa vykonáva striktne raz počas celej skice, keď je označený samotný začiatok vykonávania tohto programu.

Slučka

Slučka () - predstavuje hlavnú funkciu, ktorá sa vykonáva ihneď po spustení (len v tomto prípade, nastaviť ()).

V skutočnosti ide o samotný program, táto funkcia sa bude vykonávať v nekonečnom režime, kým používateľ nevypne napájanie zariadenia.

Príklady náčrtov

Môžete zvážiť niekoľko príkladov náčrtov, ktoré sa stanú referenčným bodom pre následnú prevádzku zariadenia. Každý z príkladov sa pokúsim implementovať do nasledujúcich materiálov. Dnes si povieme len o možnostiach.

Príklad 1

Jeden zo zaujímavých náčrtov je možné použiť na zobrazenie samotného prevádzkového času ovládača, potom prijatie príkazu „blikanie“, slúži na inicializáciu postupu blikania LED prvkov.

V náčrte v skutočnosti nie je nič mimoriadne užitočné, ale organizuje aj možnosť náhodného zobrazenia určitej frázy „Data Received“; v budúcnosti sa dá použiť priamo na testovanie a analýzu zavedených pravidiel pre fungovanie modulárneho systému. element.

Príklad 2

Pripojenie špeciálneho snímač aktuálnej hladiny vody, dažďový senzor. Na realizáciu konkrétneho projektu musíte mať:

Samotný snímač vody,
- Arduino ovládač,
- sadu spojovacích vodičov,
- počítač s káblami a programom IDE, ktorý zodpovedá kontaktnému poli.

Výsledkom je, že vďaka pomerne jednoduchému nastaveniu mikrokontroléra je zabezpečené vytvorenie optimálnych podmienok pre činnosť snímača.

Príklad 3

Osobitná pozornosť by sa mala venovať možnosti implementácie znakový výstup, následná inštalácia fontov na LCD5110, ktorá poskytne najjednoduchšiu a najspoľahlivejšiu kontrolu nad stavom samotného zariadenia.

Zobrazenie a zmena fontov sa vykonáva pomocou možností Arduina. V tomto prípade budete musieť použiť hotovú dátovú knižnicu, ako aj zdrojový kód.

Príklady použitia Arduina

Vzhľadom na početné príklady Arduina možno len prekvapiť kreatívny prístup vývojárov projektov a mimoriadnu predstavivosť. V skutočnosti môžete vytvoriť tie najneuveriteľnejšie veci, napríklad to isté hudobný prehrávač s LED súpravou.

Takýto vývoj vysoko ocenia milovníci hudby, čo vám umožní vytvoriť nielen originálny soundtrack, ale tiež vám umožní vychutnať si jasnú, mimoriadnu farebnú kombináciu.

Projekty budú môcť hodnotiť aj domáce zvieratá, napríklad mačky. Dôvodom bude automatické kŕmidlo pre mačky, ktorý môže byť vyvinutý napríklad na báze bežného CD prehrávača a ďalších.

Medzi výhody tohto zariadenia treba spomenúť možnosť výdaja krmiva pre zviera, teraz už nie je potrebné pravidelne kontrolovať množstvo krmiva v miske. Otváracia doba je upravená, po ktorej bude mačka dostávať výživné produkty striktne podľa stanoveného harmonogramu, pričom sa teší pôvodnej myšlienke svojho majiteľa.

Ak hovoríme o úplne neobvyklých projektoch, môžeme vyzdvihnúť automatické zariadenie na kvetinu ktorý teraz bude môcť posielať informácie o svojom aktuálnom stave priamo na Twitter. To všetko sa deje pomocou možností mikrokontroléra Arduino, ktorý vám umožní prenášať dáta priamo pomocou internetového pripojenia. Ako vidíte, príklady môžu byť veľmi odlišné, v nasledujúcich článkoch sa pokúsim venovať pozornosť každému z nich.

Arduino je malá doska, ktorá sa používa na vytváranie rôznych zariadení, zaujímavých gadgetov a dokonca aj počítačových platforiem. Táto doska sa nazýva mikrokontrolér a je to open source a možno ju použiť s mnohými aplikáciami.

Toto je najjednoduchšia a najlacnejšia možnosť pre začiatočníkov, amatérov a profesionálov. Proces programovania prebieha v jazyku Processing / Wiring, ktorý je rýchlo a jednoducho zvládnutý a je založený na jazyku C++ a vďaka tomu je veľmi jednoduchý. Poďme sa pozrieť na to, čo je Arduino, ako je užitočné pre začiatočníkov, jeho možnosti a vlastnosti.

Arduino je výpočtová platforma alebo doska, ktorá bude slúžiť ako mozog pre vaše nové zariadenia alebo gadgety. Na jeho základe môžete vytvárať zariadenia s jednoduchými obvodmi aj zložité projekty náročné na prácu, napríklad roboty alebo drony.

Základom konštruktéra je I/O doska (hardvér), ako aj softvér. Dizajnérsky softvér založený na Arduino je prezentovaný integrovaným vývojovým prostredím.

Samotné prostredie navonok vyzerá takto:

Softvérová časť Arduina je navrhnutá tak, aby si s ňou poradil aj začínajúci používateľ, ktorý nemá poňatia o programovaní. Dodatočným faktorom úspechu pri použití mikrokontroléra bola možnosť pracovať s doskou, keď sú potrebné časti (rezistory, diódy, tranzistory atď.) pripojené k regulátoru bez potreby spájkovania.

Väčšina dosiek Arduino má pripojenie pomocou kábla USB. Toto pripojenie umožňuje napájanie dosky a nahrávanie náčrtov, t.j. mini-programy. Proces programovania je tiež veľmi jednoduchý. Najprv používateľ použije editor kódu IDE na vytvorenie požadovaného programu, potom sa jedným kliknutím načíta do Arduina.

Ako kúpiť Arduino?

Doska a mnohé časti Arduina sú vyrobené v Z Talianska, preto sú originálne komponenty dosť drahé. Existujú však samostatné komponenty konštruktéra alebo stavebnice, takzvané veľrybie súpravy, ktoré sa vyrábajú podľa talianskej analógie, ale za dostupnejšie ceny.

Môžete si kúpiť analóg na domácom trhu alebo napríklad objednať z Číny. Veľa ľudí vie napríklad o stránke Aliexpress. Ale pre tých, ktorí sa začínajú zoznámiť s Arduinom, je lepšie objednať si prvú dosku v ruskom internetovom obchode. Postupom času môžete prejsť na nákup dosiek a dielov v Číne. Dodacia lehota z tejto krajiny bude od dvoch týždňov do mesiaca a napríklad náklady na veľkú súpravu nebudú vyššie ako 60-70 dolárov.

Štandardné súpravy vo všeobecnosti obsahujú nasledujúce časti:

  • doska na chlieb;
  • LED diódy;
  • rezistory;
  • 9V batérie;
  • regulátory napätia;
  • gombíky;
  • svetre;
  • maticová klávesnica;
  • rozširujúce karty;
  • kondenzátory.

Potrebujem vedieť programovať?

Prvé kroky k práci s doskou Arduino začínajú programovaním dosky. Program, ktorý je už pripravený na prácu s doskou, sa nazýva skica. Nemusíte sa báť, že by ste nevedeli programovať. Proces vytvárania programov je pomerne jednoduchý a na internete je veľa príkladov náčrtov, pretože komunita Arduino je veľmi veľká.

Po skompilovaní sa program načíta (flashuje) na dosku. Arduino má v tomto prípade nepopierateľnú výhodu – na programovanie sa vo väčšine prípadov používa USB kábel. Po načítaní je program pripravený vykonávať rôzne príkazy.

Začiatočníci s Arduino potrebujú poznať dve kľúčové funkcie:

  • nastaviť ()- používa sa jednorazovo pri zapnutí dosky, slúži na inicializáciu nastavení;
  • slučka ()- neustále používané, je poslednou fázou nastavenia.

Príklad zápisu funkcie nastaviť ():

Void setup () (Serial.begin (9600); // Otvorenie sériového pripojenia pinMode (9, INPUT); // Priradenie kolíka 9 ako vstupného pinMode (13, OUTPUT); // Priradenie kolíka 13 ako výstupu)

Funkcia nastaviť () sa vykonáva na úplnom začiatku a iba raz ihneď po zapnutí alebo reštartovaní vášho zariadenia.

Funkcia slučka () sa vykoná po funkcii setup (). Loop sa prekladá ako slučka alebo slučka. Funkcia bude prebiehať znova a znova. Takže mikrokontrolér ATmega328 (väčšina dosiek Arduino to obsahuje) vykoná funkciu slučky asi 10 000 krát za sekundu.

Okrem toho narazíte na ďalšie funkcie:

  • pinMode- spôsob vstupu a výstupu informácií;
  • analógovýPrečítaj- umožňuje odčítať výsledné analógové napätie na výstupe;
  • analogWrite- záznam analógového napätia na výstupnú svorku;
  • digitalRead- umožňuje odčítať hodnotu digitálneho výstupu;
  • digitalWrite- umožňuje nastaviť hodnotu digitálneho výstupu na nízkej alebo vysokej úrovni;
  • Sériová.tlač- prekladá projektové dáta do ľahko čitateľného textu.

Okrem tohto Arduina sa začiatočníkom bude páčiť aj to, že existuje veľa knižníc pre dosky, čo sú kolekcie funkcií, ktoré umožňujú ovládať dosku alebo prídavné moduly. Najpopulárnejšie sú:

  • čítanie a zápis do úložiska,
  • Pripojenie k internetu,
  • čítanie SD kariet,
  • ovládanie krokovým motorom,
  • vykresľovanie textu
  • atď.

Ako nastaviť Arduino?

Jednou z hlavných výhod konštruktora je jeho bezpečnosť vo vzťahu k užívateľským nastaveniam. Kľúčové nastavenia, ktoré sú potenciálne škodlivé pre Arduino, sú chránené a nebudú dostupné.

Preto aj neskúsený programátor môže bezpečne experimentovať a meniť rôzne možnosti a dosiahnuť požadovaný výsledok. Ale pre každý prípad vrelo odporúčame prečítať si tri dôležité materiály o tom, ako dosku nepokaziť:

Algoritmus pre klasické nastavenie programu Arduino vyzerá takto:

  • Inštalácia IDE, ktorú si môžete stiahnuť nižšie alebo z webovej stránky výrobcu;
  • inštalácia softvéru do počítača;
  • spustenie súboru Arduino;
  • zadanie vyvinutého programu do okna kódu a jeho prenos na dosku (pomocou kábla USB);
  • v sekcii IDE musíte vybrať typ konštruktora, ktorý sa má použiť. Môžete to urobiť v okne "Nástroje" - "Dosky";
  • skontrolujte kód a stlačte „Ďalej“, po ktorom sa spustí sťahovanie do Arduina.
Verzia Windows MacOS Linux
1.6.5 PSČ
Inštalátor
Inštalátor 32 bitov
64 bitov
1.8.2 PSČ
Inštalátor
Inštalátor 32 bitov
64 bitov
ARM
1.8.5 PSČ
Inštalátor
App
Inštalátor 32 bitov
64 bitov
ARM

Naplníme ruku

Aby mohli s istotou implementovať zložité nápady pomocou softvérového prostredia a Arduina, musia to začiatočníci dostať do rúk. Na tento účel sa odporúča začať zvládnutím jednoduchších úloh a projektov.

Najjednoduchší projekt, ktorý môžete urobiť, je nechať LED diódu umiestnenú na doske Arduino oproti portu blikať každú sekundu.

To si vyžaduje:

  • pripojte konštruktor k PC,
  • otvorte program, v časti „služba“ vyhľadajte blok „sériový port“.
  • vyberte požadovaný interval
  • potom musíte pridať kód, ktorý je v Arduino IDE v sekcii "Príklady".

Prvé projekty v Arduine pre začiatočníkov môžu byť:

  • blikajúca LED dióda;
  • pripojenie a ovládanie snímača teploty;
  • pripojenie a ovládanie snímača pohybu;
  • pripojenie fotorezistora;
  • servo ovládanie.

Prvý projekt

Tak sme sa dostali k nášmu prvému projektu. Poďme pripojiť Arduino, LED a tlačidlo. Tento projekt je skvelý pre začiatočníkov.

Budeme mať nasledujúcu schému:

LED sa po stlačení tlačidla rozsvieti a po ďalšom stlačení zhasne. Samotný náčrt alebo program pre Arduino bude vyzerať takto:

// piny pripojených zariadení int switchPin = 8; int ledPin = 11; // premenné pre uloženie stavu tlačidla a LED boolean lastButton = LOW; boolean currentButton = NÍZKA; boolean ledOn = false; void setup () (pinMode (switchPin, INPUT); pinMode (ledPin, OUTPUT);) // funkcia na potlačenie bounce boolean debounse (boolean last) (boolean current = digitalRead (switchPin); if (last! = current) (oneskorenie (5); prúd = digitalRead (switchPin);) spätný prúd;) void loop () (currentButton = debounse (posledné tlačidlo); if (posledné tlačidlo == NÍZKE && aktuálne tlačidlo == VYSOKÉ) (LEDOn =! LedOn;) lastButton = aktuálne tlačidlo ; digitalWrite (ledPin, ledOn);)

Možno ste si všimli funkciu debounse, ktorú sme ešte neriešili. Je to potrebné pre.

Keď pochopíte počiatočné zručnosti práce s doskou, môžete pristúpiť k implementácii zložitejších a mnohostranných úloh. Konštruktér vám umožní vytvoriť RC auto, riadenú helikoptéru, vytvoriť si vlastný telefón, vytvoriť systém atď.

Pre urýchlenie vývoja práce s Arduino doskou odporúčame začať vyrábať zariadenia z našej sekcie, kde sú krok za krokom popísané procesy vytvárania tých najzaujímavejších zariadení a gadgetov.

Po oboznámení sa so základnými prvkami Arduina a napísaním "Hello World!" je čas zoznámiť sa s programovacím jazykom.

Štruktúra jazyka je založená hlavne na C / C ++, takže tí, ktorí predtým programovali v tomto jazyku, nebudú mať problémy so zvládnutím programovania Arduino. Zvyšok by mal ovládať základné informácie o ovládacích príkazoch, dátových typoch a funkciách.

Väčšina tu obsiahnutých informácií bude kompatibilná s akýmkoľvek kurzom C/C++, s výhradou rozdielov v typoch údajov, ako aj s niekoľkými špecifickými pokynmi týkajúcimi sa programovania I/O portov.

Základy základov

Pár formálnych vecí, teda vecí, o ktorých každý vie, no niekedy na ne zabúda...

V Arduino IDE, ako v C / C ++, si musíte pamätať na veľkosť písmen. Kľúčové slová ako if, for sa vždy píšu malými písmenami. Každá inštrukcia končí znakom „;“. Bodkočiarka hovorí kompilátoru, ktorú časť má interpretovať ako inštrukciu.

Zátvorky (..) sa používajú na označenie programových blokov. Používame ich na obmedzenie tela funkcie (pozri nižšie), cyklov a podmienených príkazov.

Je dobrou praxou pridávať komentáre k obsahu programu, aby bol kód ľahko zrozumiteľný. Jednoriadkové komentáre začínajú na // (dvojité lomítko). Viacriadkové komentáre začínajú na /* a skončiť s */

Ak chceme do nášho programu zahrnúť akúkoľvek knižnicu, použijeme príkaz include. Tu sú príklady prepojenia knižníc:

#include // štandardná knižnica #include "svoya_biblioteka.h" // knižnica v adresári projektu

Funkcie v Arduine

Funkcia (podprogram) je samostatná časť programu, ktorá vykonáva nejaké operácie. Funkcie slúžia na zjednodušenie hlavného programu a zlepšenie čitateľnosti kódu. Je užitočné používať funkcie, pretože ich môžeme ľahko použiť v mnohých našich projektoch.

Štandardný kurz programovania obsahuje informácie o funkciách, ktoré budú prezentované v nasledujúcich článkoch. V prípade Arduina budú funkcie rozoberané na začiatku, pretože aj ten najjednoduchší program musí mať dve špeciálne funkcie. Toto už bolo spomenuté v predchádzajúcich článkoch, ale tu tieto informácie usporiadame.

Deklarácia funkcie

Schéma deklarácie funkcie vyzerá takto:

Napíšte názov_funkcie (parameter) (// inštrukcie na vykonanie (telo funkcie) return (/ * návratová hodnota * /);)

typ Je názov akéhokoľvek dostupného dátového typu v danom programovacom jazyku. Zoznam typov dostupných pri programovaní Arduina je uvedený v samostatnom článku.

Po vykonaní funkcia vráti hodnotu deklarovaného typu. Ak funkcia neakceptuje žiadnu návratovú hodnotu, potom bude typ údajov "neplatný".

názov_funkcie umožňuje jeho jedinečnú identifikáciu. Aby sme zavolali (spustili) funkciu, dáme jej meno.

parameter- parameter volania funkcie. Parametre sú voliteľné, ale často užitočné. Ak píšeme funkciu, ktorá nemá žiadne argumenty, zátvorky necháme prázdne.

V zátvorkách "(...)" je skutočné telo funkcie alebo inštrukcie, ktorú chceme vykonať. Popis konkrétnych pokynov uvedieme v samostatnom článku.

Všetky funkcie, ktoré vracajú hodnotu, končia príkazom return, za ktorým nasleduje návratová hodnota. Iba funkcie deklarované s nulovým ukazovateľom ("void") neobsahujú príkaz return. Uvedomte si, že príkaz return ukončí vykonávanie funkcie bez ohľadu na umiestnenie.

Nižšie sú uvedené niektoré príklady deklarácií funkcií.

Void f1 () (// telo funkcie) —————————————— int mínus () (// návrat tela funkcie (0);) ——————————— ——— int plus (int a, int b) (návrat (a + b);)

Ako môžete vidieť v príkladoch, deklarácia funkcie môže mať rôzne formy v závislosti od vašich potrieb.

Dôrazne sa odporúča, aby ste sa naučili a aplikovali funkcie pri písaní vlastných programov. Každý programátor časom dostane vlastnú knižnicu funkcií „pre všetky príležitosti“, čo uľahčuje a zrýchľuje písanie nových programov.

Teraz, keď vieme, ako môžeme napísať vlastnú funkciu, musíme sa ju naučiť používať.

Volanie funkcie

Všetky funkcie zapíšeme do jedného súboru / programu. Existuje samozrejme aj elegantnejšie riešenie, ale to sa pokúsime popísať nabudúce.

Po deklarovaní funkcie ju môžeme použiť v iných funkciách s príslušným názvom a ľubovoľnými požadovanými parametrami. Nižšie sú uvedené príklady volania funkcií, ktoré sme uviedli vyššie:

F1 (); plus (2,2); y = plus (1,5);

Ako môžete vidieť v príkladoch, funkcia sa volá zadaním jej názvu a požadovaného počtu parametrov. Dôležité je volať funkciu vždy podľa jej deklarácie.

Ak je funkcia f1 () deklarovaná bez parametrov, tak pri jej volaní nemožno špecifikovať žiadne parametre, t.j. volanie funkcie f1 (0) bude nesprávne.

Funkcia plus (int a, int b) vyžaduje práve dva parametre, takže volanie s jedným alebo tromi parametrami nie je možné.

Volaním y = plus (1,5) sa vykoná funkcia „plus“ s parametrami „1“ a „5“ a vrátená hodnota sa uloží do premennej „y“.

Funkcie nastavenia () a slučky ().

So znalosťou funkcií deklarovania a volania môžeme prejsť k funkciám systému Arduino: nastaviť () a slučka ()... Na deklaráciu týchto dvoch funkcií je potrebné Arduino IDE.

setup () je funkcia, ktorá sa volá automaticky po zapnutí napájania alebo stlačení tlačidla RESET.

Ako už z názvu vyplýva, slúži na nastavenie počiatočných hodnôt premenných, deklarácií vstupov a výstupov systému, ktoré sa zvyčajne nastavujú v počiatočných parametroch. Kvôli svojej špecifickosti táto funkcia nevracia hodnotu a nie je volaná s parametrami. Správna deklarácia funkcie setup () je uvedená nižšie:

Void setup () (// telo funkcie - inicializácia systému)

loop () je funkcia, ktorá sa volá v nekonečnej slučke. Táto funkcia tiež nevracia hodnotu a nevolá sa s parametrami. Správna deklarácia funkcie slučky () je uvedená nižšie:

Prázdna slučka () (// telo funkcie - kód programu)

Ako môžete vidieť, deklarácia funkcie loop () je totožná s deklaráciou funkcie setup (). Rozdiel spočíva vo výkone týchto funkcií mikrokontrolérom.

Teraz budeme analyzovať nasledujúci pseudokód:

Void setup () (on_led1 (); // zapnutie led1 LED off_led1 (); // vypnutie led1 LED) void loop () (on_led2 (); // zapnutie led2 LED off_led2 (); // vypnúť LED 2 LED)

Vo funkcii setup () sú dve inštrukcie: prvá zapína LED1 LED pripojenú k doske (napríklad kolík 13) a druhá vypína LED11.

Funkcia slučky () má rovnaké pokyny na zapnutie a vypnutie LED2, ktorá je pripojená k doske (napríklad kolík 12).

V dôsledku spustenia programu led1 raz zabliká, zatiaľ čo led2 sa rozsvieti a zhasne, pokiaľ je Arduino zapnuté.

Stlačenie tlačidla RESET spôsobí, že LED1 bude opäť blikať a LED2 bude opäť nepretržite blikať.

zhrnúť:

  • Funkcie setup () a loop () sú systémové funkcie, ktoré musia byť definované v každom projekte. Dokonca aj v situácii, keď do jednej z nich nenapíšeme žiadny kód, stále musíme tieto dve funkcie deklarovať;
  • Nastavenie () sa spustí raz, slučka () nepretržite;
  • Vytvárame vlastné funkcie v jednom súbore;
  • Naše funkcie môžeme volať z nastavenia () aj zo slučky () az iných funkcií;
  • Naše vlastné funkcie možno volať s parametrami a vrátiť hodnotu;
  • Volanie funkcie sa musí uskutočniť v súlade s jej deklaráciou.

Zdá sa vám štúdium mikrokontrolérov komplikované a mätúce? Pred príchodom Arudina to naozaj nebolo jednoduché a vyžadovalo si to určitú sadu programátorov a ďalšieho vybavenia.

Toto je druh elektronického konštruktéra. Prvotným cieľom projektu je umožniť ľuďom, aby sa ľahko naučili programovať elektronické zariadenia, pričom elektronickou časťou strávia minimum času.

Montáž najzložitejších obvodov a pripojenie dosiek je možné vykonať bez spájkovačky, ale pomocou prepojok s odpojiteľnými spojmi "samec" a "samica". To sa dá použiť na pripojenie kĺbových prvkov aj rozširujúcich dosiek, ktoré sa v lexikóne Arduina nazývajú jednoducho „Štíty“ (štít).

Aká je prvá doska Arduino, ktorú si môže kúpiť začiatočník?

Zvažuje sa základná a najobľúbenejšia doska. Táto tabuľa má veľkosť kreditnej karty. Celkom veľké. Väčšina štítov na trhu s ním dokonale pasuje. Na doske sú zásuvky na pripojenie externých zariadení.

V domácich obchodoch na rok 2017 sa jeho cena pohybuje okolo 4-5 dolárov. Na moderných modeloch je jeho srdcom Atmega328.

Obrázok dosky Arduino a dešifrovanie funkcií každého kolíka, pinout Arduino UNO

Mikrokontrolér na tejto doske je dlhý mikroobvod v puzdre DIP28, čo znamená, že má 28 pinov.

Ďalšia najobľúbenejšia doska stojí takmer polovicu ceny predchádzajúcej - 2-3 doláre. Toto je poplatok. Súčasné dosky sú postavené v rovnakom Atmega328, funkčne sú podobné UNO, rozdiely vo veľkosti a riešení pre spárovanie s USB, o tom neskôr. Ďalším rozdielom je, že na pripojenie zariadení k doske sú k dispozícii zástrčky vo forme ihiel.

Počet pinov (nožičiek) tejto dosky je rovnaký, ale môžete pozorovať, že mikrokontrolér je vyrobený v kompaktnejšom obale TQFP32, v balení sú pridané ADC6 a ADC7, ďalšie dve "extra" nohy duplikujú napájaciu zbernicu . Jeho rozmery sú pomerne kompaktné – približne na veľkosť vášho palca.

Treťou najobľúbenejšou doskou je, že nemá port USB na pripojenie k počítaču, o tom, ako prebieha komunikácia, vám poviem o niečo neskôr.

Ide o najmenšiu dosku zo všetkých recenzovaných, inak sa podobá na predchádzajúce dve a jej srdcom je stále Atmega328. Nebudeme brať do úvahy ďalšie dosky, pretože toto je článok pre začiatočníkov a porovnanie dosiek je témou na samostatný článok.

V hornej časti možno schému pripojenia USB-UART, kolík "GRN" - zapojený do resetovacieho obvodu mikrokontroléra, nazvať inak, o čom sa dozviete neskôr.

Ak je UNO vhodné na prototypovanie, potom sú Nano a Pro Mini vhodné pre finálne verzie vášho projektu, pretože zaberajú málo miesta.

Ako pripojiť Arduino k počítaču?

Arduino Uno a Nano sa pripájajú k počítaču cez USB. Zároveň chýba hardvérová podpora USB portu, tu sa používa obvodové riešenie pre konverziu úrovní, zvyčajne nazývané USB-to-Serial alebo USB-UART (rs-232). Zároveň je do mikrokontroléra všitý špeciálny bootloader Arduino, ktorý umožňuje blikanie na týchto zberniciach.

Arduino Uno implementuje toto prepojenie na mikrokontrolér s podporou USB - ATmega16U2 (AT16U2). Ukazuje sa, že na flashovanie hlavného mikrokontroléra je potrebný ďalší mikrokontrolér na doske.

V Arduino Nano je to implementované čipom FT232R alebo jeho analógom CH340. Toto nie je mikrokontrolér - je to prevodník úrovní, táto skutočnosť uľahčuje zostavenie Arduino Nano od začiatku vlastnými rukami.

Ovládače sa zvyčajne inštalujú automaticky po pripojení dosky Arduino. Keď som si však kúpil čínsku kópiu Arduino Nano, zariadenie bolo rozpoznané, ale nefungovalo, na prevodníku bola nalepená okrúhla nálepka s dátumom vydania, neviem, či to bolo urobené zámerne, ale keď Odlepil som to a videl som označenie CH340.

Predtým som sa s tým nestretol a myslel som si, že všetky prevodníky USB-UART sú namontované na FT232, musel som si stiahnuť ovládače, dajú sa veľmi ľahko nájsť na požiadanie "Ovladače Arduino ch340". Po jednoduchej inštalácii to fungovalo!

Mikrokontrolér je možné napájať aj cez rovnaký USB port, t.j. ak ho pripojíte k adaptéru mobilného telefónu, váš systém bude fungovať.

Čo ak moja doska nemá USB?

Doska Arduino Pro Mini je menšia. Dosiahlo sa to odstránením konektora USB pre firmvér a rovnakým prevodníkom USB-UART. Preto je potrebné ho zakúpiť samostatne. Najjednoduchší prevodník pre CH340 (najlacnejší), CPL2102 a FT232R, sa predáva za 1 dolár.

Pri kúpe dbajte na to, na aké napätie je tento adaptér určený. Pro mini sa dodáva v 3,3 a 5 V verziách a na meničoch je často prepojka na prepínanie napájacieho napätia.

Pri blikaní Pro Mini je potrebné bezprostredne pred spustením stlačiť RESET, avšak v konvertoroch s DTR to nie je potrebné, schéma zapojenia je na obrázku nižšie.

Sú spojené špeciálnymi samičími koncovkami.

V skutočnosti je možné všetky pripojenia vykonať pomocou takýchto svoriek (Dupont), sú na oboch stranách so zásuvkami a zástrčkami a na jednej strane so zásuvkou a na druhej strane so zástrčkou.

Ako písať programy pre Arduino?

Na prácu s náčrtmi (názov firmvéru je v jazyku Arduino) existuje špeciálne integrované vývojové prostredie pre Arduino IDE, ktoré si môžete bezplatne stiahnuť z oficiálnej webovej stránky alebo z akéhokoľvek tematického zdroja, zvyčajne nie sú žiadne problémy s inštaláciou.

Takto vyzerá rozhranie programu. Programy môžete písať v zjednodušenom jazyku C AVR špeciálne vyvinutom pre Arduino, v skutočnosti ide o sadu knižníc s názvom Wiring, ako aj v čistom C AVR. Vďaka čomu je kód jednoduchší a rýchlejší.

V hornej časti okna je známe menu, kde si môžete otvoriť súbor, nastavenia, vybrať dosku, s ktorou pracujete (Uno, Nano a mnoho, mnoho ďalších) a tiež otvárať projekty s hotovými príkladmi kódu. Nižšie je uvedený súbor tlačidiel na prácu s firmvérom, účel kláves môžete vidieť na obrázku nižšie.

V spodnej časti okna je oblasť pre zobrazenie informácií o projekte, stave kódu, firmvéru a prítomnosti chýb.

Základy programovania Arduino IDE

Na začiatku kódu musíte deklarovať premenné a pripojiť ďalšie knižnice, ak nejaké existujú, a to takto:

#include biblioteka.h; // zahrnúť knižnicu s názvom "Biblioteka.h"

#define peremennaya 1234; // Deklarujte premennú s hodnotou 1234

Príkaz Define umožňuje kompilátoru vybrať typ premennej, ale môžete ho nastaviť manuálne, napríklad integer int alebo floating point.

int led = 13; // vytvorte premennú "led" a priraďte jej hodnotu "13"

Program dokáže určiť stav pinu ako 1 alebo 0. 1 je logická jednotka, ak je pin 13 1, tak napätie na jeho fyzickej nohe sa bude rovnať napájaciemu napätiu mikrokontroléra (pre arduino UNO a Nano - 5 V)

Digitálny signál je zapísaný príkazom digitalWrite (pin, hodnota), napríklad:

digitalWrite (led, vysoký); // zapíšte jednu do pinu 13 (deklarovali sme to vyššie) log. Jednotky.

Ako ste mohli pochopiť, porty sú riešené číslovaním na doske, ktoré zodpovedá číslu. Tu je príklad podobný predchádzajúcemu kódu:

digitalWrite (13, vysoká); // nastavíme pin 13 na jednu

Často požadovaná funkcia časového oneskorenia sa volá príkazom delay (), ktorého hodnota sa nastavuje v milisekundách, mikrosekundy sa dosahujú pomocou

oneskorenieMikrosekundy () Oneskorenie (1000); // mikrokontrolér počká 1000 ms (1 sekundu)

Nastavenia portu pre vstup a výstup sa nastavujú vo funkcii void setup () príkazom:

pinMode (NOMERPORTA, OUTPUT / INPUT); // argumenty - názov premennej alebo číslo portu, vstup alebo výstup na výber

Pochopenie prvého programu Blink

Ako druh "Ahoj, svet" pre mikrokontroléry je program blikania LED, poďme analyzovať jeho kód:

Na začiatku sme príkazom pinMode povedali mikrokontroléru, aby k výstupu priradil port s LED diódou. Už ste si všimli, že v kóde nie je žiadna deklarácia premennej “LED_BUILTIN”, faktom je, že v doskách Uno, Nano a iných z výroby je na pin 13 pripojená vstavaná LED a je prispájkovaná na doska. Môžete ho použiť na indikácie vo vašich projektoch alebo na najjednoduchší test vašich flasher programov.

Ďalej nastavíme výstup, ku ktorému je LED prispájkovaná na jeden (5 V), ďalší riadok prinúti MK počkať 1 sekundu a potom nastaví pin LED_BUILTIN na nulu, počká sekundu a program sa opakuje v kruhu. , teda keď je LED_BUILTIN 1, LED (a akákoľvek iná záťaž pripojená k portu) svieti, keď je v 0 - nesvieti.

Načítame hodnotu z analógového portu a použijeme načítané dáta

Mikrokontrolér AVR Atmega328 má vstavaný 10-bitový analógovo-digitálny prevodník. 10-bitový ADC umožňuje čítať hodnotu napätia od 0 do 5 voltov v krokoch po 1/1024 celého kolísania amplitúdy signálu (5 V).

Aby to bolo jasnejšie, zvážme situáciu, povedzme, že hodnota napätia na analógovom vstupe je 2,5 V, čo znamená, že mikrokontrolér prečíta hodnotu z pinu "512", ak je napätie 0 - "0", a ak je 5 V - (1023). 1023 - pretože počítanie začína od 0, t.j. 0, 1, 2, 3 atď. celkovo až 1023 - 1024 hodnôt.

Takto to vyzerá v kóde na príklade štandardnej skice „analogInput“

int senzorPin = A0;

int ledPin = 13;

int hodnota senzora = 0;

pinMode (ledPin, OUTPUT);

sensorValue = analogRead (sensorPin);

digitalWrite (ledPin, HIGH);

oneskorenie (sensorValue);

digitalWrite (ledPin, LOW);

oneskorenie (sensorValue);

Deklarujeme premenné:

    Ledpin - nezávisle priraďte k výstupu kolík so vstavanou LED a uveďte individuálny názov;

    sensorPin - analógový vstup, nastavený podľa označenia na doske: A0, A1, A2 atď .;

    sensorValue je premenná na ukladanie prečítanej celočíselné hodnoty a ďalšiu prácu s ňou.

Kód funguje takto: sensorValue uloží analógovú hodnotu načítanú z sensorPin (príkaz analogRead). - tu končí práca s analógovým signálom, potom je všetko ako v predchádzajúcom príklade.

Jedničku zapíšeme do ledPin, LED sa rozsvieti a čakáme na čas rovný hodnote sensorValue, t.j. od 0 do 1023 milisekúnd. Vypnite LED a znova počkajte na túto dobu, po ktorej sa kód zopakuje.

Pozíciou potenciometra teda nastavujeme frekvenciu blikania LED.

Funkcia mapy pre Arudino

Nie všetky funkcie pre aktuátory (neviem ani jeden) podporujú "1023" ako argument, napríklad servo je obmedzené uhlom otáčania, teda pol otáčky (180 stupňov) (pol otáčky) servomotor, maximálny argument funkcie sa rovná "180"

Teraz o syntaxi: map (hodnota, ktorú prekladáme, minimálna vstupná hodnota, maximálna vstupná hodnota, minimálny výstup, maximálna výstupná hodnota).

V kóde to vyzerá takto:

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

Načítame hodnotu z potenciometra (analogRead (pot)) od 0 do 1023 a na výstupe dostaneme čísla od 0 do 180

Hodnoty mapy:

V praxi to aplikujeme na prácu kódu toho istého serva, pozrite sa na kód z Arduino IDE, ak ste si pozorne prečítali predchádzajúce časti, nevyžaduje to vysvetlenie.

A schéma zapojenia.

Závery Arduino je veľmi pohodlný nástroj na učenie sa, ako pracovať s mikrokontrolérmi. A ak použijete čistý C AVR, alebo ako sa niekedy nazýva „Pure C“, výrazne znížite hmotnosť kódu a viac sa vám zmestí do pamäte mikrokontroléra, vo výsledku získate výbornú továrensky vyrobenú debugovaciu dosku so schopnosťou flashovať cez USB.

Mám rád arduino. Škoda, že mnohí skúsení programátori mikrokontrolérov mu neopodstatnene vytýkajú prílišnú zjednodušenosť. V princípe je zjednodušený len jazyk, no nikto vás nenúti ho používať, navyše môžete mikrokontrolér preflashovať cez ICSP konektor a bez zbytočných bootloaderov si tam vyplniť kód, aký chcete.

Pre tých, ktorí sa chcú hrať s elektronikou, ako pokročilý konštruktér je ako stvorený, no pre skúsených programátorov ako doska, ktorá nevyžaduje montáž, poslúži tiež!

Ďalšie informácie o Arduine a vlastnostiach jeho použitia v rôznych schémach nájdete v elektronickej knihe - .