Jednoduché obvody Arduino pro začátečníky. Jednoduché obvody na Arduinu pro začátečníky Návrhy na Arduinu

Zpoždění v Arduinu hrají velmi velkou roli. Bez nich nemůže fungovat ani ten nejjednodušší příklad Blink, který po určité době bliká LED. Ale většina začínajících programátorů ví jen málo o časových prodlevách a používá pouze Arduino delay, aniž by znali vedlejší účinky tohoto příkazu. V tomto článku budu podrobně mluvit o funkcích časování a jak je používat v Arduino IDE.

V Arduinu existuje několik různých příkazů, které jsou zodpovědné za práci s časem a pauzami:

  • zpoždění()
  • delayMicroseconds()
  • milis()
  • micros()

Liší se přesností a mají své vlastní vlastnosti, které je třeba vzít v úvahu při psaní kódu.

Použití funkce zpoždění arduino

Syntax

Arduino delay je nejjednodušší příkaz a nejčastěji jej používají začátečníci. V podstatě se jedná o zpoždění, které pozastaví program na počet milisekund uvedených v závorkách. (Jedna sekunda je 1000 milisekund.) Maximální hodnota může být 4294967295 ms, což se přibližně rovná 50 dnům. Podívejme se na jednoduchý příklad, který názorně ukazuje, jak tento příkaz funguje.

Void setup() ( pinMode(13, OUTPUT); ) void loop() ( digitalWrite(13, HIGH); // odeslání vysokého signálu na pin 13 zpoždění (10000); // pauza 10000 ms nebo 10 sekund digitalWrite13, LOW) ; // odešle nízký signál na pin 13 delay(10000); // pauza 10 000 ms nebo 10 sekund)

V metodě založit specifikujeme, že pin 13 bude použit jako výstup. V hlavní části programu je nejprve vyslán vysoký signál na pin, poté jej zpozdíme o 10 sekund. Během této doby se zdá, že je program pozastaven. Poté je dán nízký signál a opět dochází ke zpoždění a vše začíná znovu. V důsledku toho dostaneme, že kolík je střídavě napájen 5 V, poté 0.

Musíte jasně pochopit, že během pauzy pomocí zpoždění je práce programu pozastavena, aplikace nebude přijímat žádná data ze senzorů. To je největší nevýhoda použití funkce Arduino delay. Toto omezení můžete obejít pomocí přerušení, ale o tom si povíme v samostatném článku.

Příklad zpoždění s blikající LED

Příklad obvodu pro ilustraci, jak funguje funkce zpoždění.
Můžete sestavit obvod s LED a rezistorem. Pak budeme mít standardní příklad - blikání LED. K tomu je potřeba připojit LED s kladným kontaktem na pin, který jsme označili jako výstupní. Volnou nohu LED připojíme k zemi přes odpor přibližně 220 Ohmů (je možné i trochu více). Polaritu můžete určit pohledem na jeho vnitřek. Velký pohár uvnitř je spojen s mínusem a malá noha s plusem. Pokud je vaše LED dioda nová, můžete polaritu určit podle délky vodičů: dlouhá noha je plus, krátká noha je mínus.

funkce delayMicroseconds

Tato funkce je úplnou analogií zpoždění, kromě toho, že jejími jednotkami měření nejsou milisekundy, ale mikrosekundy (za 1 sekundu je 1 000 000 mikrosekund). Maximální hodnota bude 16383, což se rovná 16 milisekundám. Rozlišení je 4, to znamená, že číslo bude vždy násobkem čtyř. Příklad úryvku by vypadal takto:

DigitalWrite(2, VYSOKÉ); // odeslání vysokého signálu na pin 2 delayMicroseconds(16383); // pauza 16383 µs digitalWrite(2, LOW); // odešle nízký signál na pin 2 delayMicroseconds(16383); // pauza 16383 µs

Problém s delayMicroseconds je úplně stejný jako se zpožděním - tyto funkce program zcela „zavěsí“ a na chvíli doslova zamrzne. V tuto chvíli nelze pracovat s porty, číst informace ze senzorů a provádět matematické operace. Tato možnost je vhodná pro blikající světla, ale zkušení uživatelé ji nepoužívají pro velké projekty, protože takové poruchy tam nejsou potřeba. Proto je mnohem lepší používat níže popsané funkce.

Funkce milis místo zpoždění

Funkce millis() vám umožní provést na Arduinu zpoždění bez zpoždění, a tím obejít nedostatky předchozích metod. Maximální hodnota parametru milis je stejná jako u funkce zpoždění (4294967295ms nebo 50 dní).

Pomocí millis nezastavíme provádění celého náčrtu, ale jednoduše naznačíme, jak dlouho má Arduino jednoduše „obejít“ přesný blok kódu, který chceme pozastavit. Na rozdíl od delay millis samo o sobě nic nezastaví. Tento příkaz nám jednoduše vrátí z vestavěného časovače mikrokontroléru počet milisekund, které uplynuly od spuštění. S každým voláním smyčky sami měříme čas, který uplynul od posledního volání našeho kódu, a pokud je časový rozdíl menší než požadovaná pauza, pak kód ignorujeme. Jakmile bude rozdíl větší než požadovaná pauza, spustíme kód, získáme aktuální čas pomocí stejných milisek a zapamatujeme si ho – tento čas bude novým výchozím bodem. V dalším cyklu bude odpočítávání již od nového bodu a opět budeme kód ignorovat, dokud nový rozdíl mezi milis a naší dříve uloženou hodnotou nedosáhne opět požadované pauzy.

Zpoždění bez zpoždění pomocí milis vyžaduje více kódu, ale s jeho pomocí můžete zablikat LED a pozastavit skicu bez zastavení systému.

Zde je příklad, který jasně ilustruje práci týmu:

nepodepsané dlouhé načasování; // Proměnná pro uložení referenčního bodu void setup() ( Serial.begin(9600); ) void loop() ( /* V tomto bodě začíná provádění analogu delay(). Vypočítejte rozdíl mezi aktuálním momentem a dříve uložený referenční bod Pokud je rozdíl větší než požadovaná hodnota, spusťte kód. Pokud ne, nedělejte nic */ if (millis() - časování > 10000)( // Místo 10000 nahraďte hodnotu pauzy, kterou potřebujete. = millis( Serial.println ("10 sekund") );

Nejprve si představíme proměnnou časování, která bude ukládat počet milisekund. Standardně je hodnota proměnné 0. V hlavní části programu kontrolujeme podmínku: pokud je počet milisekund od startu mikrokontroléru mínus číslo zapsané v časové proměnné větší než 10000, pak je provedena akce výstupu zprávy na monitor portu a do proměnné je zapsána aktuální časová hodnota. V důsledku činnosti programu se každých 10 sekund na monitoru portu zobrazí zpráva 10 sekund. Tato metoda umožňuje blikat LED bez zpoždění.

Funkce Micros místo zpoždění

Tato funkce může také provést zpoždění bez použití příkazu zpoždění. Funguje úplně stejně jako milisekundy, ale počítá spíše mikrosekundy než milisekundy s rozlišením 4 μs. Jeho maximální hodnota je 4294967295 mikrosekund nebo 70 minut. Pokud přeteče, hodnota se jednoduše resetuje na 0, nezapomeňte na to.

souhrn

Platforma Arduino nám poskytuje několik způsobů, jak implementovat zpoždění v našem projektu. Pomocí zpoždění můžete rychle pozastavit provádění náčrtu, ale zároveň zablokujete činnost mikrokontroléru. Použití příkazu millis vám umožní dělat bez zpoždění v Arduinu, ale bude to vyžadovat trochu více programování. Vyberte nejlepší metodu v závislosti na složitosti vašeho projektu. Zpravidla se v jednoduchých náčrtech a se zpožděním menším než 10 sekund používá zpoždění. Pokud je provozní logika složitější a je vyžadováno velké zpoždění, pak je lepší použít milis místo zpoždění.

“ představuje výukový kurz „Arduino pro začátečníky“. Série se skládá z 10 lekcí a doplňkového materiálu. Lekce obsahují textové pokyny, fotografie a instruktážní videa. V každé lekci naleznete seznam požadovaných komponent, výpis programu a schéma zapojení. Jakmile dokončíte těchto 10 základních lekcí, budete moci přejít k zajímavějším modelům a stavbě robotů založených na Arduinu. Kurz je určen pro začátečníky, pro jeho zahájení nejsou potřeba žádné další informace z elektrotechniky nebo robotiky.

Krátké informace o Arduinu

Co je Arduino?

Arduino (Arduino) je hardwarová výpočetní platforma, jejíž hlavní součásti jsou vstupně-výstupní deska a vývojové prostředí. Arduino lze použít k vytváření samostatných interaktivních objektů nebo k připojení k softwaru běžícímu na počítači. Arduino je jednodeskový počítač.

Jak jsou Arduino a roboti propojeni?

Odpověď je velmi jednoduchá – Arduino se často používá jako robotický mozek.

Výhodou desek Arduino oproti podobným platformám je jejich relativně nízká cena a téměř rozšířená distribuce mezi amatéry i profesionály v robotice a elektrotechnice. Jakmile začnete s Arduinem, najdete podporu v jakémkoli jazyce a stejně smýšlející lidi, kteří vám zodpoví vaše otázky a prodiskutují váš vývoj.

Lekce 1. Blikající LED na Arduinu

V první lekci se naučíte, jak připojit LED k Arduinu a ovládat ji tak, aby blikala. Toto je nejjednodušší a nejzákladnější model.

Světelná dioda- polovodičové zařízení, které vytváří optické záření, když jím prochází elektrický proud v propustném směru.

Lekce 2. Připojení tlačítka na Arduinu

V tomto tutoriálu se naučíte, jak připojit tlačítko a LED k Arduinu.

Při stisku tlačítka se LED dioda rozsvítí, při stisku tlačítka se nerozsvítí. Toto je také základní model.

Lekce 3. Připojení potenciometru na Arduinu

V tomto tutoriálu se naučíte, jak připojit potenciometr k Arduinu.

Potenciometr- Tento odpor s nastavitelným odporem.Potenciometry se používají jako regulátory různých parametrů - hlasitost zvuku, výkon, napětí atd.To je také jedno ze základních schémat. V našem modelu od otáčení knoflíku potenciometruJas LED bude záviset.

Lekce 4. Řízení serva na Arduinu

V tomto tutoriálu se naučíte, jak připojit servo k Arduinu.

Servoje motor, jehož polohu hřídele lze ovládat nastavením úhlu natočení.

Serva se používají k simulaci různých mechanických pohybů robotů.

Lekce 5. Tříbarevná LED na Arduinu

V tomto tutoriálu se naučíte, jak připojit tříbarevnou LED k Arduinu.

Tříbarevná LED(rgb led) - jedná se o tři LED diody různých barev v jednom pouzdře. Dodávají se buď s malým plošným spojem, na kterém jsou umístěny odpory, nebo bez vestavěných odporů. Lekce pokrývá obě možnosti.

Lekce 6. Piezoelektrický prvek na Arduinu

V této lekci se naučíte, jak připojit piezoelektrický prvek k Arduinu.

Piezo prvek- elektromechanický měnič, který překládá elektrické napětí do vibrací membrány. Tyto vibrace vytvářejí zvuk.

V našem modelu lze frekvenci zvuku upravit nastavením příslušných parametrů v programu.

Lekce 7. Fotorezistor na Arduinu

V této lekci našeho kurzu se naučíte, jak připojit fotorezistor k Arduinu.

Fotorezistor- rezistor, jehož odpor závisí na jasu světla dopadajícího na něj.

V našem modelu se LED rozsvítí pouze v případě, že jas světla nad fotorezistorem je menší než určitý jas, který lze v programu upravit.

Lekce 8. Pohybový senzor (PIR) na Arduinu. Automatické odesílání e-mailů

V této lekci našeho kurzu se naučíte, jak připojit pohybový senzor (PIR) k Arduinu, a také organizovat automatické odesílání e-mailů.

Pohybový senzor (PIR)- infračervený senzor pro detekci pohybu nebo přítomnosti lidí nebo zvířat.

V našem modelu při příjmu signálu o pohybu člověka z PIR senzoru Arduino odešle do počítače příkaz k odeslání e-mailu a dopis je automaticky odeslán.

Lekce 9. Připojení snímače teploty a vlhkosti DHT11 nebo DHT22

V této naší lekci se naučíte, jak připojit senzor teploty a vlhkosti DHT11 nebo DHT22 k Arduinu, a také se seznámíte s rozdíly v jejich vlastnostech.

Senzor teploty a vlhkosti je kompozitní digitální senzor skládající se z kapacitního senzoru vlhkosti a termistoru pro měření teploty.

V našem modelu Arduino čte hodnoty senzoru a zobrazuje hodnoty na obrazovce počítače.

Lekce 10. Připojení maticové klávesnice

V této lekci našeho kurzu se naučíte, jak připojit maticovou klávesnici k desce Arduino, a také se seznámíte s různými zajímavými obvody.

Maticová klávesnice vynalezen pro zjednodušení připojení velkého počtu tlačítek. Taková zařízení se nacházejí všude - v počítačových klávesnicích, kalkulačkách a tak dále.

Lekce 11. Připojení modulu hodin reálného času DS3231

V poslední lekci našeho kurzu se dozvíte, jak připojit modul hodin reálného času z rodiny
DS k desce Arduino, a také se seznámit s různými zajímavými obvody.

Modul hodin reálného času- jedná se o elektronický obvod určený k záznamu chronometrických údajů (aktuální čas, datum, den v týdnu atd.) a je to systém skládající se z autonomního zdroje energie a záznamového zařízení.

Aplikace. Hotové rámy a roboty Arduino


Arduino se můžete začít učit nejen od samotné desky, ale také zakoupením hotového, plnohodnotného robota založeného na této desce - pavoučí robot, robotí auto, želví robot atd. Takový cesta Je vhodný i pro ty, které elektrické obvody nijak zvlášť nelákají.

Zakoupením modelu pracovního robota, tzn. ve skutečnosti může hotová high-tech hračka probudit zájem o nezávislý design a robotiku. Otevřenost platformy Arduino umožňuje vyrábět nové hračky ze stejných komponent.

Další možností je zakoupení rámu nebo těla robota: plošina na kolech nebo dráze, humanoid, pavouk atd. V tomto případě budete muset provést plnění robota sami.

Aplikace. Mobilní adresář


– pomocník pro vývojáře algoritmů pro platformu Arduino, jehož účelem je dát koncovému uživateli možnost mít mobilní sadu příkazů (referenční kniha).

Aplikace se skládá ze 3 hlavních částí:

  • Operátoři;
  • Data;
  • Funkce.

Kde koupit Arduino


Sady Arduino

Kurz bude aktualizován o další lekce. Následuj nás

Dnes si povíme něco o používání SD a micro SD karet v Arduinu. Zjistíme, jak připojit SD karty k Arduinu, jak zapisovat a číst informace. Použití další paměti může být velmi užitečné v mnoha projektech. Pokud nevíte, co jsou SPI, I2C a analogové piny, pak vám doporučuji, abyste se podívali na minulé lekce a porozuměli těmto komunikačním rozhraním Arduino.

V tomto tutoriálu budeme hovořit o bezdrátové komunikaci mezi dvěma deskami Arduino. To může být velmi užitečné pro předávání příkazů z jednoho Arduina do druhého nebo pro výměnu informací mezi vašimi DIY. Možnost bezdrátového přenosu dat otevírá nové možnosti při vytváření vašich projektů.

V tomto tutoriálu se seznámíme se sběrnicí I2C. I2C je komunikační sběrnice, která využívá pouze dvě linky. Pomocí tohoto rozhraní může Arduino komunikovat s mnoha zařízeními přes dva dráty. Dnes zjistíme, jak připojit senzory k Arduinu přes I2C sběrnici, jak přistupovat ke konkrétnímu zařízení a jak přijímat data z těchto zařízení.

V tomto tutoriálu budeme hovořit o komunikačním rozhraní Arduino Serial. Toto rozhraní jsme již používali v předchozích lekcích, kdy jsme na obrazovce počítače zobrazovali hodnoty ze senzorů. Dnes se blíže podíváme na to, jak toto spojení funguje, a také se naučíme využívat data přenášená na monitor portu počítače pomocí Processing.

Dnes budeme hovořit o tranzistorech a připojení zátěže k Arduinu. Arduino samo o sobě nedokáže z jednoho pinu produkovat napětí vyšší než 5 voltů a proud vyšší než 40 mA. Na senzory a LED to stačí, ale pokud budeme chtít připojit zařízení, která jsou proudově náročnější, budeme muset použít tranzistory nebo relé.

V této lekci budeme hovořit o základech návrhu obvodů aplikovaných na Arduino. A začněme samozřejmě Ohmovým zákonem, protože ten je základem všech obvodů. Také v této lekci si povíme o odporu, pull-up a pull-up rezistorech, výpočtu proudu a napětí.

V tomto článku jsem se rozhodl dát dohromady kompletního průvodce krok za krokem pro začátečníky s Arduino. Podíváme se na to, co je Arduino, co je potřeba se začít učit, kde stáhnout a jak nainstalovat a nakonfigurovat programovací prostředí, jak funguje a jak programovací jazyk používat a mnoho dalšího, co je nutné k vytvoření plnohodnotného komplexní zařízení založená na rodině těchto mikrokontrolérů.

Zde se pokusím uvést zhuštěné minimum, abyste pochopili principy práce s Arduinem. Pro úplnější ponor do světa programovatelných mikrokontrolérů věnujte pozornost dalším sekcím a článkům tohoto webu. Pro podrobnější studium některých aspektů ponechám odkazy na další materiály na tomto webu.

Co je Arduino a k čemu slouží?

Arduino je elektronická stavebnice, která umožňuje komukoli vytvářet nejrůznější elektromechanická zařízení. Arduino se skládá ze softwaru a hardwaru. Softwarová část obsahuje vývojové prostředí (program pro psaní a ladění firmwaru), mnoho hotových a pohodlných knihoven a zjednodušený programovací jazyk. Hardware zahrnuje velkou řadu mikrokontrolérů a pro ně připravené moduly. Díky tomu je práce s Arduinem velmi snadná!

S pomocí Arduina se můžete naučit programování, elektrotechniku ​​a mechaniku. Ale to není jen vzdělávací konstruktér. Na jeho základě můžete vyrábět opravdu užitečná zařízení.
Počínaje jednoduchými blikajícími světly, meteostanicemi, automatizačními systémy a konče systémy chytré domácnosti, CNC stroji a bezpilotními vzdušnými prostředky. Možnosti nejsou omezeny ani vaší fantazií, protože návodů a nápadů na realizaci je obrovské množství.

Arduino Starter Kit

Abyste se mohli začít učit Arduino, musíte si pořídit samotnou desku mikrokontroléru a další díly. Nejlepší je pořídit si Arduino startovací sadu, ale vše potřebné si můžete vybrat sami. Doporučuji zvolit sadu, protože je to jednodušší a často i levnější. Zde jsou odkazy na nejlepší sestavy a jednotlivé díly, které si určitě budete muset prostudovat:

Základní sada Arduino pro začátečníky:Koupit
Velká sada pro školení a první projekty:Koupit
Sada přídavných senzorů a modulů:Koupit
Arduino Uno je nejzákladnější a nejpohodlnější model z řady:Koupit
Pájecí prkénko pro snadné učení a prototypování:Koupit
Sada vodičů s pohodlnými konektory:Koupit
LED sada:Koupit
Sada rezistorů:Koupit
tlačítka:Koupit
potenciometry:Koupit

Vývojové prostředí Arduino IDE

Chcete-li psát, ladit a stahovat firmware, musíte si stáhnout a nainstalovat Arduino IDE. Jedná se o velmi jednoduchý a pohodlný program. Na svém webu jsem již popsal proces stahování, instalace a konfigurace vývojového prostředí. Proto zde jednoduše ponechám odkazy na nejnovější verzi programu a na

Verze Okna Mac OS X Linux
1.8.2

Programovací jazyk Arduino

Až budete mít v rukou desku mikrokontroléru a na počítači nainstalované vývojové prostředí, můžete začít psát své první skici (firmware). Chcete-li to provést, musíte se seznámit s programovacím jazykem.

Programování Arduino využívá zjednodušenou verzi jazyka C++ s předdefinovanými funkcemi. Stejně jako v jiných programovacích jazycích podobných C i zde existuje řada pravidel pro psaní kódu. Zde jsou ty nejzákladnější:

  • Za každou instrukcí musí následovat středník (;)
  • Před deklarací funkce musíte určit datový typ vrácený funkcí, nebo void, pokud funkce nevrací hodnotu.
  • Před deklarací proměnné je také nutné uvést datový typ.
  • Komentáře jsou označeny: // Inline a /* blok */

Více o datových typech, funkcích, proměnných, operátorech a jazykových konstrukcích se můžete dozvědět na stránce na Všechny tyto informace si nemusíte pamatovat a pamatovat si je. Vždy můžete přejít do referenční knihy a podívat se na syntaxi konkrétní funkce.

Veškerý firmware Arduino musí obsahovat alespoň 2 funkce. Jsou to setup() a loop().

funkce nastavení

Aby vše fungovalo, musíme napsat náčrt. Necháme, aby se LED po stisknutí tlačítka rozsvítila a po dalším stisknutí zhasla. Zde je naše první skica:

// proměnné s piny připojených zařízení int switchPin = 8; int ledPin = 11; // proměnné pro uložení stavu tlačítka a LED boolean lastButton = LOW; boolean currentButton = NÍZKÁ; boolean ledOn = false; void setup() ( pinMode(switchPin, INPUT); pinMode(ledPin, OUTPUT); ) // funkce pro debouncing boolean debounse(boolean last) ( boolean current = digitalRead(switchPin); if(last != current) ( delay ( 5); proud = digitalRead(switchPin ) návratový proud ) void loop() ( currentButton = debounse(lastButton); if(lastButton == LOW && currentButton == HIGH) ( ledOn = !ledOn; ) lastButton = currentButton ; digitalWrite); (ledPin, ledOn);

// proměnné s piny připojených zařízení

int switchPin = 8 ;

int ledPin = 11 ;

// proměnné pro uložení stavu tlačítka a LED

boolean lastButton = NÍZKÁ ;

boolean currentButton = NÍZKÁ ;

boolean ledOn = false ;

void setup() (

pinMode(switchPin, INPUT);

pinMode(ledPin, OUTPUT);

// funkce pro debouncing

boolean debounse (boolean last ) (

booleovský proud = digitalRead(switchPin);

if (poslední != aktuální ) (

zpoždění(5);

proud = digitalRead(switchPin);

zpětný proud ;

void loop() (

currentButton = debounse(lastButton);

if (poslední Tlačítko == NÍZKÁ && aktuální Tlačítko == VYSOKÉ ) (

ledOn = ! ledOn;

lastButton = currentButton ;

digitalWrite(ledPin, ledOn);

V tomto náčrtu jsem vytvořil další funkci odskoku pro potlačení odskoku kontaktu. Na mém webu jsou informace o opuštění kontaktu. Určitě si tento materiál prohlédněte.

PWM Arduino

Pulzní šířková modulace (PWM) je proces řízení napětí pomocí pracovního cyklu signálu. To znamená, že pomocí PWM můžeme plynule ovládat zátěž. Například můžete plynule měnit jas LED, ale tato změna jasu se nedosáhne snížením napětí, ale zvýšením intervalů nízkého signálu. Princip činnosti PWM je znázorněn na tomto obrázku:

Když na LED přiložíme PWM, začne rychle svítit a zhasínat. Lidské oko to nevidí, protože frekvence je příliš vysoká. Při natáčení videa ale s největší pravděpodobností uvidíte okamžiky, kdy LED dioda nesvítí. K tomu dojde za předpokladu, že snímková frekvence kamery není násobkem frekvence PWM.

Arduino má vestavěný pulzně šířkový modulátor. PWM můžete použít pouze na těch pinech, které jsou podporovány mikrokontrolérem. Například Arduino Uno a Nano mají 6 PWM pinů: jedná se o piny D3, D5, D6, D9, D10 a D11. Piny se mohou na jiných deskách lišit. Najdete zde popis desky, o kterou máte zájem

Pro použití PWM v Arduinu existuje funkce, která bere jako argumenty číslo pinu a hodnotu PWM od 0 do 255. 0 je 0 % naplnění vysokým signálem a 255 je 100 %. Napíšeme si jednoduchý náčrt jako příklad. Necháme LED diodu plynule svítit, počkáme jednu sekundu a stejně plynule zhasne a tak dále do nekonečna. Zde je příklad použití této funkce:

// LED je připojena na pin 11 int ledPin = 11; void setup() ( pinMode(ledPin, OUTPUT); ) void loop() ( for (int i = 0; i< 255; i++) { analogWrite(ledPin, i); delay(5); } delay(1000); for (int i = 255; i >0; i--) ( analogWrite(ledPin, i); delay(5); ) )

// LED připojená k pinu 11

int ledPin = 11 ;

void setup() (

pinMode(ledPin, OUTPUT);

void loop() (

for (int i = 0; i< 255 ; i ++ ) {

analogWrite(ledPin, i);

zpoždění(5);

zpoždění(1000);

for (int i = 255; i > 0; i -- ) (

Tento simulátor funguje nejlépe v prohlížeči Chrome
Pojďme se na Arduino podívat blíže.

Arduino není velký počítač, který lze připojit k externím obvodům. Arduino Uno používá Atmega 328P
Toto je největší čip na desce. Tento čip spouští programy, které jsou uloženy v jeho paměti. Program si můžete stáhnout přes usb pomocí Arduino IDE. Port USB také zajišťuje napájení arduina.

K dispozici je samostatný napájecí konektor. Deska má dva piny označené 5v a 3,3v, které jsou potřeba pro napájení různých zařízení. Dále najdete piny označené GND, jedná se o zemnící piny (zem je 0V). Platforma Arduino má také 14 digitálních pinů, označených 0 až 13, které se připojují k externím uzlům a mají dva stavy, vysoký nebo nízký (zapnuto nebo vypnuto). Tyto kontakty mohou pracovat jako výstupy nebo jako vstupy, tzn. mohou buď přenášet některá data a ovládat externí zařízení, nebo přijímat data ze zařízení. Další kolíky na desce jsou označeny A0-A5. Jedná se o analogové vstupy, které mohou přijímat data z různých senzorů. To je zvláště výhodné, když potřebujete změřit určitý rozsah, například teplotu. Analogové vstupy mají další funkce, které lze aktivovat samostatně.

Jak používat vývojovou desku.

Prkénko na krájení je potřeba k dočasnému spojení dílů, kontrole, jak zařízení funguje, než vše připájete.
Všechny následující příklady jsou sestaveny na prkénku, takže můžete rychle provést změny v obvodu a znovu použít díly, aniž byste se museli obtěžovat pájením.

Prkénko má řady otvorů, do kterých můžete vkládat díly a dráty. Některé z těchto otvorů jsou navzájem elektricky spojeny.

Dvě horní a spodní řady jsou spojeny v řadách podél celé desky. Tyto řady se používají k napájení obvodu. Mohlo by to být 5V nebo 3,3V, ale v každém případě první věc, kterou musíte udělat, je připojit 5V a GND k prkénku, jak je znázorněno na obrázku. Někdy mohou být tyto řádkové spoje přerušeny uprostřed desky, pak, pokud potřebujete, můžete je připojit, jak je znázorněno na obrázku.








Zbývající otvory, umístěné uprostřed desky, jsou seskupeny do skupin po pěti jamkách. Používají se ke spojení částí obvodu.


První věc, kterou připojíme k našemu mikrokontroléru, je LED. Schéma elektrického zapojení je na obrázku.

Proč je v obvodu potřeba rezistor? V tomto případě omezuje proud, který prochází LED. Každá LED je navržena pro určitý proud, a pokud je tento proud vyšší, LED selže. Jakou hodnotu by měl mít rezistor, můžete zjistit pomocí Ohmova zákona. Pro ty, kteří nevědí nebo zapomněli, Ohmův zákon říká, že mezi proudem a napětím existuje lineární vztah. Čili čím větší napětí na rezistor přivedeme, tím větší proud jím proteče.
V=I*R
Kde PROTI- napětí na rezistoru
- proud přes odpor
R- odpor, který je třeba najít.
Nejprve musíme zjistit napětí na rezistoru. Většina 3mm nebo 5mm LED, které budete používat, má provozní napětí 3V. To znamená, že potřebujeme zhasnout 5-3 = 2V na rezistoru.

Následně vypočítáme proud procházející rezistorem.
Většina 3mm a 5mm LED svítí při plném jasu při 20mA. Větší proud je může deaktivovat, zatímco proud nižší intenzity sníží jejich jas, aniž by způsobil jakoukoli újmu.

Chceme tedy zapojit LED do obvodu 5V tak, aby vedla proud 20mA. Protože jsou všechny části zahrnuty v jednom obvodu, bude mít rezistor také proud 20 mA.
Dostaneme
2V = 20 mA * R
2V = 0,02A * R
R = 100 Ohm

100 Ohmů je minimální odpor, je lepší použít trochu více, protože LED diody mají určité rozdíly ve vlastnostech.
V tomto příkladu je použit odpor 220 ohmů. Už jen proto, že jich má autor hodně:mrkat: .

Vložte LED do otvorů uprostřed desky tak, aby její dlouhý vodič byl připojen k jednomu z vodičů rezistoru. Připojte druhý konec rezistoru k 5V a druhý vodič LED připojte ke GND. LED by se měla rozsvítit.

Upozorňujeme, že je rozdíl ve způsobu připojení LED. Proud teče z delší svorky na kratší. V diagramu si můžete představit, že proud teče ve směru, kam směřuje trojúhelník. Zkuste LEDku otočit vzhůru nohama a uvidíte, že se nerozsvítí.

Ale na tom, jak připojíte odpor, vůbec nezáleží. Můžete ji otočit nebo ji zkusit připojit k jinému kolíku LED, to neovlivní činnost obvodu. Stále bude omezovat proud procházející LED.

Anatomie Arduino Sketch.

Programy pro Arduino se nazývají sketch. Skládají se ze dvou hlavních funkcí. Funkce založit a funkce smyčka
Uvnitř této funkce nastavíte všechna základní nastavení. Které piny budou fungovat jako vstup nebo výstup, které knihovny připojit, inicializovat proměnné. Funkce Založit() běží pouze jednou během skici, když se spustí provádění programu.
toto je hlavní funkce, která se provede poté založit(). Ve skutečnosti je to samotný program. Tato funkce poběží neomezeně dlouho, dokud nevypnete napájení.

Arduino blikající LED



V tomto příkladu připojíme LED obvod k jednomu z digitálních pinů Arduina a zapínáme a vypínáme jej pomocí programu a také se naučíte několik užitečných funkcí.

Tato funkce se používá v založit() součástí programu a slouží k inicializaci pinů, které budete používat jako vstup (VSTUP) nebo odejít (VÝSTUP). Nebudete moci číst ani zapisovat data z pinu, dokud jej nenastavíte na resp pinMode. Tato funkce má dva argumenty: číslo PIN je číslo PIN, které budete používat.

Režim-nastavuje, jak bude pin fungovat. U vchodu (VSTUP) nebo odejít (VÝSTUP). Aby se LED rozsvítila, musíme dát signál Z Arduino. Za tímto účelem nakonfigurujeme výstupní kolík.
- tato funkce slouží k nastavení stavu (Stát) pina (číslo PIN). Existují dva hlavní stavy (ve skutečnosti 3), jeden je VYSOKÝ, na pinu bude 5V, to je něco jiného Nízký a pin bude 0v. To znamená, že pro rozsvícení LED musíme nastavit pin připojený k LED na vysokou úroveň VYSOKÝ.

Zpoždění. Slouží k odložení činnosti programu o dobu zadanou v ms.
Níže je kód, který způsobí, že LED začne blikat.
//LED Blink int ledPin = 7;//Kolík Arduina, ke kterému je LED připojena void setup() ( pinMode(ledPin, OUTPUT);// nastavení pinu jako OUTPUT) void loop() ( digitalWrite(ledPin, HIGH) ;// zapnutí zpoždění LED (1000);// zpoždění 1000 ms (1 s) digitalWrite(ledPin, LOW);//Vypnutí zpoždění LED (1000);//čekejte 1 sekundu)

Malá vysvětlení ke kódu.
Řádky začínající „//“ jsou komentáře a Arduino je ignoruje.
Všechny příkazy končí středníkem, pokud je zapomenete, zobrazí se chybová zpráva.

ledPin je proměnná. Proměnné se v programech používají k ukládání hodnot. V tomto příkladu proměnná ledPin hodnota je přiřazena 7, toto je číslo pinu Arduino. Když program Arduino narazí na řádek s proměnnou ledPin, použije hodnotu, kterou jsme zadali dříve.
Takže záznam pinMode(ledPin, OUTPUT) podobně jako nahrávání pinMode(7, VÝSTUP).
Ale v prvním případě stačí změnit proměnnou a ta se změní na každém řádku, kde se používá, a ve druhém případě, abyste proměnnou změnili, budete muset změny provést ručně v každém příkazu.

První řádek označuje typ proměnné. Při programování Arduina je důležité vždy deklarovat typ proměnných. Prozatím stačí, abyste to věděli INT oznamuje záporná a kladná čísla.
Níže je simulace náčrtu. Kliknutím na start zobrazíte okruh v akci.

Podle očekávání LED zhasne a po jedné sekundě se znovu rozsvítí. Zkuste změnit zpoždění, abyste viděli, jak to funguje.

Ovládání více LED.

V tomto příkladu se naučíte ovládat více LED diod. Chcete-li to provést, nainstalujte na desku 3 další LED a připojte je k odporům a pinům Arduino, jak je znázorněno níže.

Chcete-li zapínat a vypínat LED diody jednu po druhé, musíte napsat program podobný tomuto:
//Multi LED Blink int led1Pin = 4; int led2Pin = 5; int led3Pin = 6; int led4Pin = 7; void setup() ( //nastavení pinů jako OUTPUT pinMode(led1Pin, OUTPUT); pinMode(led2Pin, OUTPUT); pinMode(led3Pin, OUTPUT); pinMode(led4Pin, OUTPUT); ) void loop() ( digitalWrite(led1Pin, HIGH );//zapněte zpoždění LED (1000);//zpoždění 1 s digitalWrite(led1Pin, LOW);//vypnutí zpoždění LED (1000);//zpoždění 1 s //udělejte totéž pro další 3 LED diody digitalWrite(led2Pin, HIGH);//zpoždění rozsvícení LED diod (1000);//zpoždění 1 s digitalWrite(led2Pin, LOW);//zhasnutí zpoždění LED (1000);//zpoždění 1 s digitalWrite(led3Pin, HIGH );//zpoždění rozsvícení LED (1000);// zpoždění 1 s digitalWrite(led3Pin, LOW);//zhasnutí zpoždění LED (1000);//zpoždění 1 s digitalWrite(led4Pin, HIGH);//zapnout zpoždění LED (1000);// zpoždění 1 s digitalWrite (led4Pin, LOW);//zhasnutí zpoždění LED (1000);//zpoždění 1 s)

Tento program bude fungovat skvěle, ale není to nejracionálnější řešení. Kód je třeba změnit. Aby program fungoval znovu a znovu, použijeme konstrukci nazvanou .
Smyčky jsou užitečné, když potřebujete opakovat stejnou akci několikrát. V kódu výše opakujeme řádky

DigitalWrite(led4Pin, HIGH); zpoždění(1000); digitalWrite(led4Pin, LOW); zpoždění(1000);
celý kód skici v příloze (Staženo: 1260)

Nastavení jasu LED

Někdy budete muset změnit jas LED diod v programu. To lze provést pomocí příkazu analogWrite() . Tento příkaz zapíná a vypíná LED tak rychle, že oko nemůže vidět blikání. Pokud je LED zapnutá polovinu času a zhasnutá polovinu času, bude to vizuálně vypadat, že svítí polovičním jasem. Tomu se říká pulzně šířková modulace (anglicky PWM nebo PWM). Podložka se používá poměrně často, protože ji lze použít k ovládání „analogové“ součásti pomocí digitálního kódu. Ne všechny piny Arduino jsou pro tyto účely vhodné. Pouze ty závěry, v jejichž blízkosti je takové označení vyvozeno“ ~ “. Uvidíte ji vedle pinů 3,5,6,9,10,11.
Připojte jednu z vašich LED k jednomu z pinů PWM (pro autora je to pin 9). Nyní spusťte náčrt blikající LED, ale nejprve změňte příkaz digitalWrite() na analogWrite(). analogWrite() má dva argumenty: první je číslo pinu a druhý je hodnota PWM (0-255), ve vztahu k LED to bude jejich jas a u elektromotorů rychlost otáčení. Níže je uveden příklad kódu pro různé jasy LED.
//Změna jasu LED int ledPin = 9;//k tomuto pinu je připojena LED void setup() ( pinMode(ledPin, OUTPUT);// inicializace pinu na výstup ) void loop() ( analogWrite( ledPin, 255);// plný jas (255/255 = 1) zpoždění (1000);//pauza 1 s digitalWrite(ledPin, LOW);//vypnutí zpoždění LED (1000);//pauza 1 s analogWrite( ledPin, 191);//jas o 3/4 (191/255 ~= 0,75) delay(1000);//pauza 1 s digitalWrite(ledPin, LOW);//vypnutí LED delay(1000);// pause 1 sec analogWrite(ledPin, 127) //poloviční jas (127/255 ~= 0,5) delay(1000);//pauza 1 sec digitalWrite(ledPin, LOW);//vypnutí LED delay(1000);/ /pauza 1 sec analogWrite(ledPin, 63) //čtvrtletní jas (63/255 ~= 0,25) delay(1000);//pauza 1 sec digitalWrite(ledPin, LOW);//vypnutí zpoždění LED(1000); ;//pauza 1 sekunda)

Zkuste změnit hodnotu PWM v příkazu analogWrite() abyste viděli, jak to ovlivňuje jas.
Dále se dozvíte, jak plynule nastavit jas od plné po nulu. Úsek kódu můžete samozřejmě zkopírovat 255krát
analogWrite(ledPin, jas); delay(5);//krátké zpoždění jas = jas + 1;
Ale chápete, to nebude praktické. Nejlepší způsob, jak toho dosáhnout, je použít smyčku FOR, kterou jsme použili dříve.
Následující příklad používá dvě smyčky, jednu pro snížení jasu z 255 na 0
for (int jas=0;jas=0;jas--)( analogWrite(ledPin,jas); zpoždění(5); )
zpoždění (5) používá se ke zpomalení rychlosti prolínání jasu 5*256=1280ms=1,28s)
První řádek používá " jas-", aby se hodnota jasu snížila o 1 při každém opakování smyčky. Pamatujte, že smyčka poběží do jas >=0.Výměna cedulky > na znamení >= zahrnuli jsme 0 do rozsahu jasu. Tento náčrt je modelován níže. //hladce změňte jas int ledPin = 9;//k tomuto pinu je připojena LED void setup() ( pinMode(ledPin, OUTPUT);// inicializace výstupního pinu) void loop() ( //hladce zvyšte jas (0 až 255 ) pro (int jas=0;jas=0;jas--)( analogWrite(ledPin,jas); delay(5); ) delay(1000);//čekejte 1 sekundu //hladce snižte jas (255 až 0) pro (int jas=255;jas>=0;jas--)( analogWrite(ledPin,jas); delay(5); ) delay(1000);//čekejte 1 s) )
Není to moc vidět, ale myšlenka je jasná.

RGB LED a Arduino

RGB LED jsou ve skutečnosti tři různé barevné LED v jednom balení.

Zahrnutím různých LED s různým jasem je můžete kombinovat a vytvářet různé barvy. Pro Arduino, kde je počet úrovní jasu 256, získáte 256^3=16581375 možných barev. Ve skutečnosti jich bude samozřejmě méně.
LED, kterou použijeme, je společná katoda. Tito. všechny tři LED jsou konstrukčně připojeny katodami k jedné svorce. Tento pin propojíme s pinem GND. Zbývající piny, přes omezovací odpory, musí být připojeny k PWM pinům. Autor použil piny 9-11 Takto bude možné ovládat každou LED samostatně. První skica ukazuje, jak zapnout každou LED jednotlivě.



//RGB LED - test //spojení pinů int red = 9; int zelená = 10; int modrá = 11; void setup())( pinMode(červená, OUTPUT); pinMode(modrá, OUTPUT); pinMode(zelená, OUTPUT); ) void loop())( //zapnutí/vypnutí červené LED digitalWrite(červená, HIGH); delay(500) digitalWrite(red, LOW) //zapnout/vypnout zelenou LED digitalWrite(zelena, HIGH, LOW); VYSOKÝ; digitalWrite(modrá, NÍZKÁ);

Následující příklad používá příkazy analogWrite() a získat různé náhodné hodnoty jasu pro LED. Uvidíte různé barvy náhodně se měnící.
//RGB LED - náhodné barvy //kolíkové spoje int red = 9; int zelená = 10; int modrá = 11; void setup())( pinMode(červená, VÝSTUP); pinMode(modrá, VÝSTUP); pinMode(zelená, VÝSTUP); ) void loop())( //výběr náhodné barvy analogWrite(red, random(256)); analogWrite( modrá, náhodný(256));

Náhodně(256)-vrátí náhodné číslo v rozsahu od 0 do 255.
V přiloženém souboru je náčrt, který bude demonstrovat plynulé barevné přechody z červené do zelené, poté do modré, červené, zelené atd. (Staženo: 348)
Ukázkový náčrt funguje, ale existuje mnoho duplicitních kódů. Kód můžete zjednodušit napsáním vlastní pomocné funkce, která bude plynule přecházet z jedné barvy na druhou.
Bude to vypadat následovně: (Staženo: 385)
Podívejme se na definici funkce kousek po kousku. Funkce je volána fader a má dva argumenty. Každý argument je oddělen čárkou a má typ deklarovaný na prvním řádku definice funkce: void fader (int color1, int color2). Vidíte, že oba argumenty jsou deklarovány jako int a dostanou jména barva1 A barva2 jako podmínkové proměnné k definování funkce. Neplatné znamená, že funkce nevrací žádné hodnoty, pouze provádí příkazy. Pokud byste měli napsat funkci, která vrací výsledek násobení, vypadala by takto:
int multiplikátor(int číslo1, int číslo2)( int produkt = číslo1*číslo2; vrátit produkt; )
Všimněte si, jak jsme deklarovali Type int místo toho jako návratový typ
prázdnota.
Uvnitř funkce jsou příkazy, které jste již použili v předchozím náčrtu, pouze čísla kolíků byla nahrazena barva1 A barva2. Funkce je volána fader, jeho argumenty se počítají jako barva1 = červená A barva2 = zelená. Archiv obsahuje kompletní skicu pomocí funkcí (Staženo: 288)

Knoflík

Další skica bude používat tlačítko s normálně otevřenými kontakty bez aretace.


To znamená, že při nestisknutém tlačítku jím neprotéká proud a po uvolnění se tlačítko vrátí do původní polohy.
Kromě tlačítka obvod používá rezistor. V tomto případě neomezuje proud, ale „přitáhne“ tlačítko na 0V (GND). Tito. Dokud tlačítko nestisknete, kolík Arduina, ke kterému je připojen, bude nízký. Rezistor použitý v obvodu je 10 kOhm.


//určení, kdy je tlačítko stisknuto int buttonPin = 7; void setup())( pinMode(buttonPin, INPUT);//inicializovat pin na vstup Serial.begin(9600);//inicializovat sériový port) void loop())( if (digitalRead(buttonPin)==HIGH )(//pokud je tlačítko stisknuto Serial.println("stisknuto"); // zobrazit nápis "stisknuto" ) jinak ( Serial.println("nestisknuto");// jinak "nestisknuto" ) )
V této skice je několik nových příkazů.
-Tento příkaz přebírá vysoké a nízké hodnoty výstupu, který testujeme. Tento výstup musí být nejprve nakonfigurován jako vstup v setup().
; //kde buttonPin je číslo pinu, ke kterému je tlačítko připojeno.
Sériový port umožňuje Arduinu posílat zprávy do počítače, zatímco samotný řadič provádí program. To je užitečné pro ladění programu, odesílání zpráv do jiných zařízení nebo aplikací. Chcete-li povolit přenos dat přes sériový port (také nazývaný UART nebo USART), musíte jej inicializovat v setup()

Serial.begin() má pouze jeden argument – ​​tím je rychlost přenosu dat mezi Arduinem a počítačem.
Skica používá příkaz k zobrazení zprávy na obrazovce v Arduino IDE (Nástroje >> Serial Monitor).
- konstrukce umožňuje řídit průběh provádění programu kombinací několika kontrol na jednom místě.
Pokud digitalRead vrátí hodnotu HIGH, pak se na monitoru zobrazí slovo „stisknuto“. Jinak (jinak) se na monitoru zobrazí slovo „uvolněno“. Nyní můžete zkusit zapnout a vypnout LED stisknutím tlačítka.
//detekce stisknutí tlačítka s výstupem LED int buttonPin = 7; int ledPin = 8; void setup())( pinMode(buttonPin, INPUT);//tentokrát nastavíme pin tlačítka jako INPUT pinMode(ledPin, OUTPUT); Serial.begin(9600); ) void loop())( if (digitalRead(buttonPin) )= =HIGH)( digitalWrite(ledPin,HIGH); Serial.println("stisknuto"); ) else ( digitalWrite(ledPin,LOW); Serial.println("unpressed"); ) )

Analogový vstup.

analogPřečíst umožňuje číst data z jednoho z analogových pinů Arduino a zobrazuje hodnotu v rozsahu od 0 (0V) do 1023 (5V). Pokud je napětí na analogovém vstupu 2,5 V, vytiskne se 2,5 / 5 * 1023 = 512
analogPřečíst má pouze jeden argument - Toto je číslo analogového vstupu (A0-A5). Následující náčrt ukazuje kód pro čtení napětí z potenciometru. K tomu připojte proměnný rezistor, vnější svorky na piny 5V a GND a střední svorku na vstup A0.

Spusťte následující kód a na sériovém monitoru uvidíte, jak se hodnoty mění v závislosti na otáčení knoflíku rezistoru.
//analogový vstup int potPin = A0;//centrální kolík potenciometru je připojen k tomuto kolíku void setup())( //analogový kolík je standardně zahrnut jako vstup, takže inicializace není nutná Serial.begin(9600 ) void loop())( int potVal = analogRead(potPin);//potVal je číslo mezi 0 a 1023 Serial.println(potVal)
Následující skica kombinuje skicu kliknutí na tlačítko a skicu ovládání jasu LED. LED se rozsvítí tlačítkem a jas se ovládá potenciometrem.
//detekce stisknutí tlačítka s výstupem LED a proměnnou intenzitou int tlačítkoPin = 7; int ledPin = 9; int potPin = A0; void setup())( pinMode(buttonPin, INPUT); pinMode(ledPin, OUTPUT); Serial.begin(9600); ) void loop())( if (digitalRead(buttonPin)==HIGH)(//pokud bylo stisknuto tlačítko int analogVal = analogRead(potPin) = map(analogVal, 0, 1023, 0, 255 analogWrite(ledPin, scaledVal);//zapni LED s intenzitou nastavenou pot Serial.println("pressed"); ( digitalWrite(ledPin, LOW);//vypnout, pokud není tlačítko stisknuto Serial.println("unpressed"); ) )

Doručení nových domácích produktů na poštu

Dostávejte výběr nových domácích produktů e-mailem. Žádný spam, pouze užitečné nápady!