Výukový program pro Arduino pro začátečníky

  • Owen Little
  • 0
  • 5029
  • 1421
reklama

Semafor Arduino je zábavný malý projekt, který můžete postavit za méně než hodinu. Zde je návod, jak si vytvořit svůj vlastní pomocí Arduino a jak změnit obvod pro pokročilé variace.

Pokud byste si to raději prohlíželi jako tutoriál jako video, připravili jsme vás:

Co potřebujete k sestavení řadiče semaforu Arduino

Kromě základního Arduina budete potřebovat:

  • 1 x 10 k-ohmový rezistor
  • 1 x tlačítkový spínač
  • Odpory 6 x 220 ohmů
  • Prkénko
  • Připojovací dráty
  • Červené, žluté a zelené LED diody

Téměř každý Arduino bude pracovat pro tento projekt za předpokladu, že má dostatek kolíků. Nezapomeňte si přečíst našeho průvodce nákupem Arduina. Průvodce nákupem Arduina: Kterou desku byste měli získat? Průvodce nákupem Arduina: Kterou desku byste měli získat? Je tam tolik různých druhů desek Arduino, bylo by vám odpuštěno, že jste zmatení. Které byste si měli koupit pro svůj projekt? Pomozte nám s tímto nákupním průvodcem Arduino! pokud si nejste jisti, jaký model potřebujete. Tyto součásti již můžete mít ve své startovací sadě Arduino Co je ve vaší startovací sadě Arduino? [Arduino začátečníci] Co je ve vaší Arduino Starter Kit? [Arduino Beginners] Díky krabici plnou elektronických součástek je snadné přemoci. Zde je průvodce přesně tím, co najdete v sadě. .

Arduino Semafor: Základy

Začněme malé. Základní, jedno semafor je dobré místo pro start. Zde je okruh:

Připojte anodu (dlouhou nohu) každé LED k digitálním pinům osm, devět a deset (pomocí 220 ohmového rezistoru). Připojte katody (krátkou nohu) k Arduino zemi.

Kód pro dopravní světlo Arduino

Začněte definováním proměnných, abyste světla mohli adresovat spíše podle jména než čísla. Zahajte nový projekt Arduino a začněte těmito řádky:

int červená = 10; int žlutá = 9; int green = 8;

Dále přidáme funkci nastavení, kde nakonfigurujete červené, žluté a zelené LED diody jako výstupy. Protože jste vytvořili proměnné reprezentující čísla pinů, můžete nyní místo toho odkazovat na piny podle názvu:

void setup () pinMode (červený, OUTPUT); pinMode (žlutá, VÝSTUP); pinMode (zelený, VÝSTUP); 

pinMode Funkce konfiguruje Arduino tak, aby jako výstup použil daný pin. Musíte to udělat, aby vaše LED diody fungovaly vůbec. Nyní pro skutečnou logiku semaforu. Zde je kód, který potřebujete. Přidejte toto pod vaše definice proměnných a funkce nastavení:

void loop () changeLights (); zpoždění (15000);  void changeLights () // green off, yellow on 3 sec digitalWrite (green, LOW); digitalWrite (žlutá, VYSOKÁ); zpoždění (3000); // vypněte žlutou a poté červenou na 5 sekund digitalWrite (žlutá, NÍZKÁ); digitalWrite (červená, VYSOKÁ); zpoždění (5000); // červená a žlutá na 2 sekundy (červená je již zapnutá) digitalWrite (žlutá, VYSOKÁ); zpoždění (2000); // vypněte červenou a žlutou, poté zapněte zelenou digitalWrite (žlutá, NÍZKÁ); digitalWrite (červená, LOW); digitalWrite (zelená, VYSOKÁ); zpoždění (3000); 

Nahrajte tento kód do svého Arduina a spusťte (ujistěte se, že jste vybrali správnou desku a port z Nástroje > Prkno a Nástroje > Přístav menu). Měli byste mít funkční semafor, který se mění každých 15 sekund, jako je tento (zrychlený):

Pojďme rozebrat tento kód. changeLights funkce vykonává veškerou těžkou práci. Toto otáčí semafor žlutou a červenou, poté zpět na zelenou. Jak se to nazývá uvnitř smyčka funkce, Arduino spustí tento kód navždy s pokaždé 15 sekundovou přestávkou.

changeLights funkce se skládá ze čtyř různých kroků:

  • Zelená, žlutá
  • Žlutá, červená
  • Žlutá, červená
  • Zelená, červená, žlutá

Tyto čtyři kroky kopírují proces používaný ve skutečných semaforech. Pro každý krok je kód velmi podobný. Příslušná LED se zapne nebo vypne pomocí digitalWrite. Toto je funkce Arduino, která slouží k nastavení výstupních pinů na VYSOKÁ (pro zapnuto) nebo NÍZKÉ (pro vypnuto).

Po aktivaci nebo deaktivaci požadovaných kontrolek LED zpoždění nutí Arduino čekat po určitou dobu. V tomto případě tři sekundy.

Jít hlouběji: Přechod pro chodce Arduino

Nyní, když znáte základy, pojďme to vylepšit. Přidejte tlačítko pro chodce, aby změnili světlo, kdykoli budou chtít:

Všimněte si, že semafor je přesně stejný jako v předchozím příkladu. Připojte tlačítko k digitálnímu kolíku 12. Všimněte si, že k přepínači je připojen vysoce impedanční 10k-ohmový rezistor a možná se ptáte proč. Jedná se o pull-down rezistor.

Přepínač buď nechá aktuální tok, nebo ne. To se zdá dost jednoduché, ale v logickém obvodu by proud měl vždy protékat ve vysokém nebo nízkém stavu (pamatujte, 1 nebo 0, VYSOKÝ nebo NÍZKÝ). Dalo by se předpokládat, že tlačítko, které není ve skutečnosti stisknuto, by bylo ve stavu NÍZKÉ, ale ve skutečnosti se říká, že je „plovoucí“, protože žádný proud se vůbec nepřitahuje..

V tomto plovoucím stavu je možné, že dojde k nesprávnému čtení, protože kolísá s elektrickým rušením. Jinými slovy, plovoucí spínač nedává spolehlivé VYSOKÉ ani NÍZKÉ čtení. Přitahovací rezistor udržuje malé množství proudu, když je spínač sepnutý, čímž je zajištěno přesné odečtení stavu v nízkém stavu.

V jiných logických obvodech můžete místo toho najít pull-up rezistor, a to funguje na stejném principu, ale naopak, ujistěte se, že konkrétní logická brána je ve výchozím nastavení vysoká.

Nyní, ve smyčkové části kódu, místo výměny světel každých 15 sekund, budete místo toho číst stav tlačítkového spínače a světla měnit pouze, když je aktivován.

Kód pro přechod pro chodce Arduino

Začněte přidáním nové proměnné pro uložení tlačítka:

tlačítko int = 12; // spínač je na pinu 12 

Nyní ve funkci nastavení přidejte nový řádek a deklarujte přepínač jako vstup. Přidejte řádek a nastavte semafory na zelenou scénu. Bez tohoto počátečního nastavení by se zhasli až poprvé changeLights běží.

pinMode (tlačítko, INPUT); digitalWrite (zelená, VYSOKÁ);

Místo toho změňte celou funkci smyčky na následující:

void loop () if (digitalRead (button) == HIGH) delay (15); // softwarové odmítnutí if (digitalRead (button) == HIGH) // pokud je přepínač HIGH, tzn. tlačil dolů - měňte světla! changeLights (); zpoždění (15000); // počkejte 15 sekund

To by mělo udělat. Možná vás zajímá, proč se kontrola tlačítka provádí dvakrát (digitalRead (tlačítko)), oddělené malým zpožděním. To je debouncing. Stejně jako rezistenční odpor pro tlačítko, i tato jednoduchá kontrola zastaví kód detekující drobné rušení stiskem tlačítka.

Čekáním uvnitř -li Po dobu 15 sekund se semafory nemohou změnit alespoň po dobu trvání. Po uplynutí 15 sekund se smyčka restartuje. Při každém restartu smyčky se znovu načte stav tlačítka, ale pokud není stisknuto, pak se objeví -li příkaz se nikdy neaktivuje, světla se nikdy nezmění a program se restartuje znovu.

Takto to vypadá (zrychlené):

Arduino semafor s křižovatkou

Zkusme pokročilejší model. Místo přechodu pro chodce změňte okruh na dvě semafory:

Připojte druhé semafor k digitálním pinům 11, 12 a 13.

Kód pro dopravní světlo Arduino s křižovatkou

Nejprve přiřaďte své nové kolíky semaforu proměnným a nakonfigurujte je jako výstupy, jako v prvním příkladu:

// light one int red1 = 10; int yellow1 = 9; int green1 = 8; // light two int red2 = 13; int yellow2 = 12; int green2 = 11; void setup () // light one pinMode (red1, OUTPUT); pinMode (yellow1, OUTPUT); pinMode (green1, OUTPUT); // light two pinMode (red2, OUTPUT); pinMode (yellow2, OUTPUT); pinMode (green2, OUTPUT); 

Nyní aktualizujte smyčku, aby použila kód z prvního příkladu (místo přechodu pro chodce):

void loop () changeLights (); zpoždění (15000); 

Opět je veškerá práce prováděna na internetu changeLights funkce. Spíše než jít Červené > Červené & žlutá > zelená, tento kód bude střídat semafory. Když je jedna na zelené, druhá na červené. Zde je kód:

void changeLights () // obrátí obě žluté na digitalWrite (green1, LOW); digitalWrite (yellow1, HIGH); digitalWrite (yellow2, HIGH); zpoždění (5000); // vypněte obě žluté a protilehlou zelenou a červenou digitalWrite (yellow1, LOW); digitalWrite (red1, HIGH); digitalWrite (yellow2, LOW); digitalWrite (red2, LOW); digitalWrite (green2, HIGH); zpoždění (5000); // obě žluté na znovu digitalWrite (yellow1, HIGH); digitalWrite (yellow2, HIGH); digitalWrite (green2, LOW); zpoždění (3000); // vypněte obě žluté a protilehlou zelenou a červenou digitalWrite (green1, HIGH); digitalWrite (yellow1, LOW); digitalWrite (red1, LOW); digitalWrite (yellow2, LOW); digitalWrite (red2, HIGH); zpoždění (5000); 

Jak to vypadá (zrychlené):

Arduino Semafor Další kroky

To je pro dnešek vše. Vaše nové chápání LED a tlačítek Arduino se vztahuje na všechny druhy různých projektů. Pokud chcete tato semafory rozšířit, proč si nestavět čtyřcestnou (nebo více) křižovatku, doplněnou mnoha křižovatkami pro chodce a světly pro chodce?

Nebo proč nerozšiřovat své nové dovednosti o větší projekt, jako je tento DIY MIDI ovladač nebo Arduino robot s Xodem? Můžete se také podívat na kódování Arduino pomocí VS Code a PlatformIO Lepší kódování Arduino pomocí VS kódu a PlatformIO Lepší Arduino kódování pomocí VS kódu a PlatformIO Chcete snadný způsob, jak začít kódovat Arduino? S PlatformIO a VS Code můžete zjednodušit Arduino projekty a učit se rychleji. .

Obrázek Kredit: androsvector / Shutterstock




Bisher hat noch niemand einen Kommentar zu diesem Artikel abgegeben.

O moderní technologii, jednoduché a cenově dostupné.
Váš průvodce ve světě moderních technologií. Naučte se, jak používat technologie a pomůcky, které nás každý den obklopují, a naučte se, jak objevovat na internetu zajímavé věci.