Obsah:

Vytváření písniček pomocí Arduina a stejnosměrného motoru: 6 kroků
Vytváření písniček pomocí Arduina a stejnosměrného motoru: 6 kroků

Video: Vytváření písniček pomocí Arduina a stejnosměrného motoru: 6 kroků

Video: Vytváření písniček pomocí Arduina a stejnosměrného motoru: 6 kroků
Video: Arduino návody - Ovládání serva 2024, Červenec
Anonim
Vytváření písniček pomocí Arduina a stejnosměrného motoru
Vytváření písniček pomocí Arduina a stejnosměrného motoru

Druhý den jsem při procházení několika článků o Arduinu spatřil zajímavý projekt, který pomocí krokových motorů ovládaných Arduinem vytvářel krátké melodie. Arduino použilo pin PWM (Pulse Width Modulation) ke spuštění krokového motoru na specifických frekvencích, odpovídajících hudebním notám. Načasováním, které frekvence se kdy hrály, byla z krokového motoru slyšet jasná melodie.

Když jsem to však sám vyzkoušel, zjistil jsem, že krokový motor, který mám, se nemůže otáčet dostatečně rychle, aby vytvořil tón. Místo toho jsem použil stejnosměrný motor, který je relativně jednoduché naprogramovat a připojit k Arduinu. Ke snadnému pohonu motoru z pinu Arduino PWM lze použít běžný integrovaný obvod L293D a potřebnou frekvenci může generovat funkce přirozeného tónu () v Arduinu. K mému překvapení jsem nenašel žádné příklady ani projekty využívající stejnosměrný motor online, a proto je tento Instructables mojí odpovědí na nápravu. Začněme!

P. S. Předpokládám, že již máte nějaké zkušenosti s Arduinem a jste obeznámeni s jeho programovacím jazykem a hardwarem. Měli byste vědět, co jsou pole, co je PWM a jak jej používat a jak funguje napětí a proud, abychom jmenovali jen několik věcí. Pokud tam ještě nejste nebo jste právě zahájili Arduino, nebojte se: vyzkoušejte tuto úvodní stránku z oficiálního webu Arduino a vraťte se, kdykoli budete připraveni.:)

Zásoby

  • Arduino (použil jsem UNO, ale pokud chcete, můžete použít jiné Arduino)
  • Standardní 5V stejnosměrný motor, nejlépe s možností připojení ventilátoru (viz obrázek v části „Sestavení obvodu“)
  • L293D IC
  • Tolik tlačítek jako not ve skladbě, kterou chcete přehrát
  • Prkénko
  • Propojovací dráty

Krok 1: Přehled

Projekt funguje takto: Arduino vygeneruje čtvercovou vlnu na dané frekvenci, kterou vyvede do L293D. L293D je připojen k externímu napájecímu zdroji, který používá k napájení motoru na frekvenci, kterou udává Arduino. Tím, že zabráníte otáčení hřídele stejnosměrného motoru, je možné slyšet vypínání a zapínání motoru na frekvenci, která vydává tón nebo notu. Arduino můžeme naprogramovat tak, aby při stisknutí tlačítek přehrávalo noty nebo je automaticky přehrávalo.

Krok 2: Sestavení obvodu

Sestavení obvodu
Sestavení obvodu
Sestavení obvodu
Sestavení obvodu

Chcete -li sestavit obvod, jednoduše postupujte podle Fritzingova diagramu výše.

Tip: Poznámka z motoru je nejlépe slyšet, když se hřídel netočí. Na hřídel motoru jsem vložil ventilátor a pomocí lepicí pásky držel ventilátor v klidu, když motor běžel (viz obrázek). To zabránilo otáčení hřídele a vytvářelo jasný a slyšitelný tón. Možná budete muset doladit, aby váš motor získal čistý tón.

Krok 3: Jak obvod funguje

Jak obvod funguje
Jak obvod funguje

L293D je integrovaný obvod používaný pro řízení zařízení s relativně vysokým napětím a vysokým proudem, jako jsou relé a motory. Arduino není schopen pohánět většinu motorů přímo ze svého výstupu (a zadní EMF z motoru může poškodit citlivé digitální obvody Arduina), takže integrovaný obvod jako L293D lze použít s externím napájecím zdrojem pro snadné napájení stejnosměrného motoru. Vstup signálu do L293D bude vysílat stejný signál do stejnosměrného motoru, aniž by hrozilo poškození Arduina.

Nahoře je pinout/funkční schéma L293D z jeho datového listu. Protože řídíme pouze 1 motor (L293D může řídit 2), potřebujeme pouze jednu stranu integrovaného obvodu. Pin 8 je napájení, piny 4 a 5 jsou GND, pin 1 je výstup PWM z Arduina a piny 2 a 7 ovládají směr motoru. Když je kolík 2 VYSOKÝ a kolík 7 je NÍZKÝ, motor se točí jedním směrem a když je kolík 2 NÍZKÝ a kolík 7 je VYSOKÝ, motor se otáčí opačným směrem. Protože je nám jedno, jakým způsobem se motor otáčí, nezáleží na tom, zda jsou piny 2 a 7 NÍZKÉ nebo VYSOKÉ, pokud se navzájem liší. Kolíky 3 a 6 se připojují k motoru. Pokud chcete, můžete vše připojit na druhou stranu (piny 9-16), ale mějte na paměti, že přepínače napájení a PWM kolíků jsou na svém místě.

Poznámka: Pokud používáte Arduino, které nemá dostatek pinů pro každé tlačítko, můžete pomocí sítě odporů připojit všechny přepínače k jednomu analogovému pinu, například v tomto návodu. Jak to funguje, je mimo rozsah tohoto projektu, ale pokud jste někdy používali R-2R DAC, měli byste to znát. Všimněte si toho, že použití analogového pinu bude vyžadovat přepsání velkých částí kódu, protože knihovnu Button nelze použít s analogovými piny.

Krok 4: Jak kód funguje

Aby bylo ovládání všech tlačítek snazší, použil jsem knihovnu s názvem „Button“od madleech. Nejprve jsem zahrnul knihovnu. Dále jsem v řádcích 8-22 definoval frekvence not potřebných ke hraní Twinkle, Twinkle, Little Star (ukázková píseň), pin, který použiji k ovládání L293D, a tlačítek.

Ve funkci nastavení jsem inicializoval sériový port, tlačítka a nastavil pin ovladače pro L293D do výstupního režimu.

Nakonec jsem v hlavní smyčce zkontroloval, zda nebylo stisknuto tlačítko. Pokud ano, Arduino přehraje odpovídající notu a vytiskne název poznámky na Serial Monitor (užitečné pro zjištění, které noty jsou na vašem breadboardu). Pokud vydáte notu, arduino zastaví jakýkoli zvuk pomocí noTone ().

Bohužel, vzhledem ke struktuře knihovny, jsem nemohl najít způsob, jak zkontrolovat, zda bylo tlačítko stisknuto nebo uvolněno méně podrobným způsobem než pomocí 2 podmíněností na notu. Další chybou tohoto kódu je, že pokud byste stiskli dvě tlačítka současně a poté jedno z nich uvolnili, obě poznámky by se zastavily, protože noTone () zastaví generování jakýchkoli poznámek bez ohledu na to, která poznámka je spustila.

Krok 5: Programování písně

Namísto přehrávání not pomocí tlačítek můžete Arduino také naprogramovat tak, aby vám automaticky přehrávalo melodii. Zde je upravená verze prvního náčrtu, který hraje Twinkle, Twinkle, Little Star na motoru. První část skici je stejná - definuje frekvence not a tonePin. K nové části se dostáváme na bpm = "100". Nastavil jsem údery za minutu (bpm) a poté pomocí nějaké matematiky zjistil počet milisekund za úder, kterému se bpm rovná. K tomu jsem použil techniku zvanou dimenzionální analýza (nebojte se - není to tak těžké, jak to zní). Pokud jste někdy absolvovali středoškolský chemický kurz, určitě jste použili rozměrovou analýzu k převodu mezi jednotkami. Plováky () mají zajistit, aby nic v rovnici nebylo zaokrouhleno až do samého konce kvůli přesnosti.

Poté, co máme počet ms/úder, jsem je vhodně rozdělil nebo znásobil, abych našel milisekundové hodnoty různých délek not nalezených v hudbě. Poté vytvořím řadu každé poznámky v chronologickém pořadí a další s délkou trvání každé poznámky. Je důležité, aby se index každé noty shodoval s indexem jejího trvání, jinak se vaše melodie rozezní. Jako příklad jsem zde uvedl poznámky pro Twinkle, Twinkle, Little Star, ale můžete vyzkoušet libovolnou skladbu nebo posloupnost not, které byste chtěli.

Skutečné kouzlo se odehrává ve funkci smyčky. Pro každou notu hraji tón po dobu, kterou jsem zadal v poli beat_values. Namísto použití zpoždění, které by způsobilo, že se tón nepřehraje, jsem zaznamenal čas od spuštění programu funkcí millis () a odečetl jej od aktuálního času. Když čas překročí čas, který jsem určil, aby poznámka vydržela v poli beat_values, poznámku zastavím. Zpoždění po smyčce for má přidat mezeru mezi notami a zajistit, aby se následující noty se stejnou frekvencí nespojovaly.

Krok 6: Zpětná vazba

To je pro tento projekt vše. Pokud něčemu nerozumíte nebo máte nějaké návrhy, neváhejte mě kontaktovat. Jelikož se jedná o můj první Instructables, velmi bych ocenil komentáře a návrhy, jak tento obsah vylepšit. Uvidíme se příště!

Doporučuje: