Obsah:

Vytváranie piesní pomocou Arduina a jednosmerného motora: 6 krokov
Vytváranie piesní pomocou Arduina a jednosmerného motora: 6 krokov

Video: Vytváranie piesní pomocou Arduina a jednosmerného motora: 6 krokov

Video: Vytváranie piesní pomocou Arduina a jednosmerného motora: 6 krokov
Video: Изучите Arduino за 30 минут: примеры и проекты 2024, Júl
Anonim
Vytváranie piesní pomocou Arduina a jednosmerného motora
Vytváranie piesní pomocou Arduina a jednosmerného motora

Na druhý deň som si pri listovaní v článkoch o Arduine všimol zaujímavý projekt, ktorý pomocou krokových motorov ovládaných Arduinom vytváral krátke melódie. Arduino použil pin PWM (Pulse Width Modulation) na spustenie krokového motora na konkrétnych frekvenciách, zodpovedajúcich hudobným notám. Načasovaním, ktoré frekvencie sa kedy hrali, bola z krokového motora počuť jasnú melódiu.

Keď som to však vyskúšal sám, zistil som, že krokový motor, ktorý mám, sa nemôže otáčať dostatočne rýchlo, aby vytvoril tón. Namiesto toho som použil jednosmerný motor, ktorý je pomerne jednoduché naprogramovať a pripojiť k Arduinu. Na jednoduché poháňanie motora z pinu Arduino PWM je možné použiť bežný integrovaný obvod L293D a požadovanú frekvenciu môže generovať funkcia prirodzeného tónu () v Arduine. Na moje prekvapenie som nenašiel žiadne príklady alebo projekty s použitím jednosmerného motora online, a preto sú tieto pokyny mojou odpoveďou na nápravu. Začnime!

P. S. Predpokladám, že s Arduinom už máte nejaké skúsenosti a poznáte jeho programovací jazyk a hardvér. Aby ste pomenovali niekoľko vecí, mali by ste vedieť, čo sú polia, čo je PWM a ako ho používať a ako funguje napätie a prúd. Ak tam ešte nie ste alebo ste práve začali s Arduinom, nebojte sa: vyskúšajte túto úvodnú stránku z oficiálneho webu Arduino a vráťte sa, kedykoľvek budete pripravení.:)

Zásoby

  • Arduino (použil som UNO, ale ak chcete, môžete použiť aj iné Arduino)
  • Štandardný 5V jednosmerný motor, najlepšie taký, ktorý môže mať pripojený ventilátor (pozri obrázok v časti „Zostavenie obvodu“)
  • L293D IC
  • Toľko tlačidiel ako poznámok v skladbe, ktorú chcete hrať
  • Breadboard
  • Prepojovacie vodiče

Krok 1: Prehľad

Projekt funguje takto: Arduino vygeneruje na danej frekvencii štvorcovú vlnu, ktorú vysiela na L293D. L293D je napojený na externý zdroj napájania, ktorý používa na napájanie motora na frekvencii, ktorú udáva Arduino. Zabránením otáčania hriadeľa motora na jednosmerný prúd je možné počuť vypínanie a zapínanie motora pri frekvencii, ktorá vydáva tón alebo notu. Arduino môžeme naprogramovať tak, aby hralo poznámky po stlačení tlačidiel alebo aby ich hralo automaticky.

Krok 2: Zostavenie obvodu

Zostavenie obvodu
Zostavenie obvodu
Zostavenie obvodu
Zostavenie obvodu

Pri zostavovaní obvodu jednoducho postupujte podľa Fritzingovho diagramu vyššie.

Tip: Poznámka z motora je najlepšie počuť, keď sa hriadeľ netočí. Dal som ventilátor na hriadeľ môjho motora a pomocou lepiacej pásky držal ventilátor nehybný, keď motor bežal (pozri obrázok). To zabránilo otáčaniu hriadeľa a vytváralo jasný, počuteľný tón. Možno budete musieť doladiť čistý tón z vášho motora.

Krok 3: Ako funguje obvod

Ako funguje obvod
Ako funguje obvod

L293D je integrovaný obvod používaný na napájanie zariadení s relatívne vysokým napätím a vysokým prúdom, ako sú relé a motory. Arduino nedokáže poháňať väčšinu motorov priamo zo svojho výstupu (a zadný EMF z motora môže poškodiť citlivé digitálne obvody Arduina), takže integrovaný obvod ako L293D je možné použiť s externým zdrojom napájania na ľahké poháňanie jednosmerného motora. Vstup signálu do L293D bude prenášať rovnaký signál do jednosmerného motora bez rizika poškodenia Arduina.

Hore je pinout/funkčná schéma L293D z jeho technického listu. Pretože poháňame iba 1 motor (L293D môže poháňať 2), potrebujeme iba jednu stranu integrovaného obvodu. Pin 8 je výkon, piny 4 a 5 jsou GND, pin 1 je výstup PWM z Arduina a piny 2 a 7 ovládajú smer motora. Keď je kolík 2 VYSOKÝ a kolík 7 je NÍZKY, motor sa točí jedným smerom a keď je kolík 2 NÍZKY a kolík 7 je VYSOKÝ, motor sa točí druhým smerom. Pretože nám je jedno, akým spôsobom sa motor točí, nezáleží na tom, či sú kolíky 2 a 7 NÍZKE alebo VYSOKÉ, pokiaľ sa navzájom líšia. Kolíky 3 a 6 sa pripájajú k motoru. Ak chcete, môžete všetko pripojiť na druhú stranu (piny 9-16), ale uvedomte si, že prepínač napájania a kolíkov PWM je na mieste.

Poznámka: Ak používate Arduino, ktoré nemá dostatok pinov pre každé tlačidlo, môžete pomocou siete rezistorov pripojiť všetky prepínače k jednému analógovému kolíku, ako je to v tomto návode. Ako to funguje, nespadá do rámca tohto projektu, ale ak ste niekedy používali D-prevodník R-2R, mali by ste to poznať. Všimnite si toho, že použitie analógového pinu bude vyžadovať prepísanie veľkých častí kódu, pretože knižnicu Button nie je možné použiť s analógovými pinmi.

Krok 4: Ako kód funguje

Na uľahčenie ovládania všetkých tlačidiel som použil knižnicu s názvom „Button“od madleech. Prvú vec som zahrnul knižnicu. Ďalej som v riadkoch 8-22 definoval frekvencie tónov potrebných na hranie Twinkle, Twinkle, Little Star (ukážková pieseň), špendlík, ktorý použijem na ovládanie L293D, a tlačidiel.

Vo funkcii nastavenia som inicializoval sériové číslo, tlačidlá a nastavil pin ovládača pre L293D do výstupného režimu.

Nakoniec som v hlavnej slučke skontroloval, či nie je stlačené tlačidlo. Ak áno, Arduino prehrá zodpovedajúcu notu a vytlačí názov poznámky na sériový monitor (užitočné na zistenie, ktoré noty sú na vašom breadboarde). Ak pustíte notu, arduino zastaví akýkoľvek zvuk pomocou funkcie noTone ().

Vzhľadom na štruktúru knižnice som bohužiaľ nenašiel spôsob, ako skontrolovať, či bolo tlačidlo stlačené alebo uvoľnené menej podrobne ako pomocou 2 podmienených výrazov na notu. Ďalšou chybou tohto kódu je, že ak by ste súčasne stlačili dve tlačidlá a potom jedno z nich uvoľnili, obe noty by sa zastavili, pretože noTone () zastaví vytváranie akýchkoľvek poznámok bez ohľadu na to, ktorá nota ich spustila.

Krok 5: Programovanie piesne

Namiesto tlačidiel na prehrávanie poznámok môžete Arduino naprogramovať tak, aby vám automaticky prehrávalo melódiu. Tu je upravená verzia prvého náčrtu, ktorý na motore hrá Twinkle, Twinkle, Little Star. Prvá časť náčrtu je rovnaká - definuje frekvencie tónov a tónový kolík. K novej časti sa dostávame rýchlosťou bpm = "100". Nastavím údery za minútu (bpm) a potom pomocou nejakej matematiky zistím počet milisekúnd na úder, ktorým sa bpm rovná. Na tento účel som použil techniku nazývanú dimenzionálna analýza (nebojte sa - nie je to také ťažké, ako to znie). Ak ste niekedy absolvovali stredoškolský kurz chémie, určite ste na premenu medzi jednotkami použili rozmerovú analýzu. Plaváky () slúžia na to, aby zaistili, že nič v rovnici nie je zaokrúhlené na presnosť.

Potom, čo máme počet ms/úder, som ich primerane rozdelil alebo znásobil, aby som našiel milisekundové hodnoty rôznych dĺžok not nachádzajúcich sa v hudbe. Potom urobím pole pre každú notu v chronologickom poradí a ďalšiu pre každú notu. Je dôležité, aby sa index každej noty zhodoval s indexom jej trvania, inak sa vaša melódia rozoznie. Tu som uviedol ako príklad poznámky pre Twinkle, Twinkle, Little Star, ale môžete vyskúšať akúkoľvek skladbu alebo postupnosť nôt, ktoré by ste chceli.

Skutočné kúzlo sa deje vo funkcii slučky. Pri každej z nôt prehrávam tón po dobu, ktorú som zadal v poli beat_values. Namiesto toho, aby som tu použil oneskorenie, ktoré by spôsobilo, že sa tón nepohrá, zaznamenal som čas od spustenia programu pomocou funkcie millis () a odpočítal som ho od aktuálneho času. Akonáhle čas presiahne čas, ktorý som určil, aby poznámka vydržala v poli beat_values, poznámku zastavím. Oneskorenie za slučkou for má pridať medzeru medzi notami, aby sa zaistilo, že nasledujúce noty s rovnakou frekvenciou sa nebudú miešať.

Krok 6: Spätná väzba

To je pre tento projekt všetko. Ak niečomu nerozumiete alebo máte nejaké návrhy, neváhajte ma kontaktovať. Pretože je to môj prvý návod na použitie, veľmi by som ocenil komentáre a návrhy na zlepšenie tohto obsahu. Uvidíme sa nabudúce!

Odporúča: