Sadržaj:

Stvaranje pjesama s Arduinom i istosmjernim motorom: 6 koraka
Stvaranje pjesama s Arduinom i istosmjernim motorom: 6 koraka

Video: Stvaranje pjesama s Arduinom i istosmjernim motorom: 6 koraka

Video: Stvaranje pjesama s Arduinom i istosmjernim motorom: 6 koraka
Video: 30 невероятных проектов Arduino, которые вы должны попробовать 2024, Srpanj
Anonim
Stvaranje pjesama s Arduinom i istosmjernim motorom
Stvaranje pjesama s Arduinom i istosmjernim motorom

Neki dan, pregledavajući neke članke o Arduinu, uočio sam zanimljiv projekt koji je koristio koračne motore s Arduinovim upravljanjem za stvaranje kratkih melodija. Arduino je koristio PWM (Pulse Width Modulation) pin za pokretanje koračnog motora na određenim frekvencijama, koje odgovaraju glazbenim notama. Određivanjem vremena koje su se frekvencije reproducirale, iz koračnog motora mogla se čuti jasna melodija.

Međutim, kad sam to isprobao, otkrio sam da se koračni motor koji imam ne može okretati dovoljno brzo da stvori ton. Umjesto toga, koristio sam istosmjerni motor, koji je relativno jednostavan za programiranje i povezivanje s Arduinom. Uobičajeni L293D IC može se koristiti za jednostavno pokretanje motora s Arduino PWM pina, a funkcija izvornog tona () u Arduinu može generirati potrebnu frekvenciju. Na moje iznenađenje, na internetu nisam pronašao nijedan primjer ili projekt korištenja istosmjernog motora, pa je ovaj Instructables moj odgovor na to. Započnimo!

p.s. Pretpostavljam da već imate određeno iskustvo s Arduinom i da ste upoznati s njegovim programskim jezikom i hardverom. Trebali biste znati što su nizovi, što je PWM i kako ga koristiti, te kako rade napon i struja, samo da navedemo nekoliko stvari. Ako još niste tamo ili ste tek započeli s Arduinom, ne brinite: isprobajte ovu stranicu za početak sa službene web stranice Arduino i vratite se kad god budete spremni.:)

Pribor

  • Arduino (koristio sam UNO, ali možete koristiti i drugi Arduino ako želite)
  • Standardni 5V DC motor, po mogućnosti jedan s ventilatorom (vidi sliku u "Sklapanje kruga"
  • L293D IC
  • Koliko god gumba pritisnete koliko nota u pjesmi želite reproducirati
  • Oglasna ploča
  • Žice za kratkospojnike

Korak 1: Pregled

Evo kako projekt funkcionira: Arduino će generirati kvadratni val na zadanoj frekvenciji, koji šalje na L293D. L293D je spojen na vanjsko napajanje koje koristi za napajanje motora na frekvenciji koju daje Arduino. Sprječavajući rotaciju vratila istosmjernog motora, može se čuti kako se motor isključuje i uključuje na frekvenciji koja proizvodi ton ili notu. Možemo programirati Arduino da svira note kada se pritisnu tipke ili da ih automatski svira.

Korak 2: Sastavljanje kruga

Sastavljanje kruga
Sastavljanje kruga
Sastavljanje kruga
Sastavljanje kruga

Da biste sastavili krug, jednostavno slijedite gornji dijagram Fritzinga.

Savjet: Bilješka iz motora najbolje se čuje kada se vratilo ne okreće. Stavio sam ventilator na osovinu svog motora i upotrijebio ljepljivu traku da pričvrstim ventilator dok motor radi (vidi sliku). To je spriječilo okretanje osovine i proizvelo jasan, zvučan ton. Možda ćete morati malo prilagoditi kako biste dobili čisti ton iz vašeg motora.

Korak 3: Kako krug radi

Kako radi krug
Kako radi krug

L293D je IC koji se koristi za pogon uređaja relativno visokog napona, velike struje, poput releja i motora. Arduino ne može pokretati većinu motora izravno sa svog izlaza (a stražnji EMF iz motora može oštetiti osjetljivo digitalno kolo Arduina), pa se IC poput L293D može koristiti s vanjskim napajanjem za jednostavno pokretanje istosmjernog motora. Unošenjem signala u L293D isti će se signal emitirati na istosmjerni motor bez rizika od oštećenja Arduina.

Gore je ispis/funkcionalna shema L293D iz njegove podatkovne tablice. Budući da upravljamo samo jednim motorom (L293D može voziti 2), potrebna nam je samo jedna strana IC -a. Pin 8 je napajanje, pinovi 4 i 5 su GND, pin 1 je PWM izlaz iz Arduina, a pinovi 2 i 7 upravljaju smjerom motora. Kad je iglica 2 VISOKA, a iglica 7 NISKA, motor se okreće u jednom smjeru, a kada je iglica 2 NISKA, a pin 7 VISA, motor se okreće u drugom smjeru. Budući da nas ne zanima na koji se način motor okreće, nije važno jesu li iglice 2 i 7 niske ili visoke, sve dok se međusobno razlikuju. Igle 3 i 6 spajaju se na motor. Sve možete spojiti na drugu stranu (pinovi 9-16) ako želite, ali imajte na umu da pinovi za napajanje i PWM mijenjaju mjesta.

Napomena: Ako koristite Arduino koji nema dovoljno pinova za svaki gumb, možete upotrijebiti mrežu otpornika za povezivanje svih prekidača na jedan analogni pin, na primjer u ovim uputama. Kako ovo funkcionira izvan je opsega ovog projekta, ali ako ste ikada koristili R-2R DAC, trebao bi vam biti poznat. Imajte na umu da će upotreba analognog pina zahtijevati prepisivanje velikih dijelova koda jer se knjižnica Button ne može koristiti s analognim pinovima.

Korak 4: Kako kôd radi

Da bih olakšao rukovanje svim gumbima, upotrijebio sam biblioteku Madleech pod nazivom "Button". Prvo sam uključio knjižnicu. Zatim sam u retcima 8-22 definirao frekvencije nota koje su potrebne za sviranje Twinkle, Twinkle, Little Star (primjer pjesme), pin kojim ću upravljati L293D i gumbe.

U funkciji postavljanja inicijalizirao sam serijski broj, gumbe i namjestio iglu upravljačkog programa za L293D u način rada za izlaz.

Konačno, u glavnoj petlji provjerio sam je li pritisnuto dugme. Ako jest, Arduino svira odgovarajuću notu i ispisuje naziv bilješke na serijski monitor (korisno za znati koje su bilješke koje na vašoj ploči). Ako se pusti nota, arduino zaustavlja bilo koji zvuk s noTone ().

Nažalost, zbog načina na koji je knjižnica strukturirana, nisam mogao pronaći način da provjerim je li gumb pritisnut ili otpušten na manje detaljan način nego pomoću 2 uvjeta po bilješci. Još jedan nedostatak ovog koda je da ako pritisnete dva gumba istovremeno, a zatim otpustite jedan od njih, obje bilješke bi bile zaustavljene, jer noTone () zaustavlja generiranje bilješki bez obzira na to koja je bilješka to pokrenula.

Korak 5: Programiranje pjesme

Umjesto gumba za reprodukciju nota, možete programirati i Arduino da za vas automatski svira melodiju. Evo modificirane verzije prve skice koja na motoru igra Twinkle, Twinkle, Little Star. Prvi dio skice je isti - definira frekvencije note i tonPin. Dolazimo do novog dijela u bpm = "100". Postavio sam otkucaje u minuti (bpm), a zatim pomoću neke matematike shvatio broj milisekundi po taktu na koji je bpm jednak. Za to sam upotrijebio tehniku koja se zove dimenzionalna analiza (ne brinite - nije tako teško kao što zvuči). Ako ste ikada išli na gimnazijski tečaj kemije, definitivno ste koristili dimenzionalnu analizu za pretvaranje između jedinica. Plovci () su tu da osiguraju da ništa u jednadžbi nije zaokruženo do samog kraja radi točnosti.

Nakon što imamo broj ms/otkucaja, podijelio sam ga ili pomnožio na odgovarajući način kako bih pronašao milisekundne vrijednosti različitih trajanja nota koje se nalaze u glazbi. Zatim napravim niz svake bilješke kronološkim redoslijedom, i još jedan s trajanjem svake bilješke. Vrlo je važno da se indeks svake note podudara s indeksom njezinog trajanja, inače će vaša melodija zvučati isključeno. Ovdje sam stavio bilješke za Twinkle, Twinkle, Little Star ovdje kao primjer, ali možete isprobati bilo koju pjesmu ili niz bilješki koje želite.

Prava čarolija događa se u funkciji petlje. Za svaku notu sviram ton neko vrijeme koje sam naveo u nizu beat_values. Umjesto da ovdje koristim odgodu, što bi dovelo do toga da se ton ne reproducira, zabilježio sam vrijeme od početka programa s funkcijom millis () i oduzeo ga od trenutnog vremena. Kad vrijeme pređe vrijeme koje sam naveo u bilješci beat_values kako bi trajala kako bi trajala, bilješku zaustavljam. Odgoda nakon for petlje postoji kako bi se povećao jaz između nota, osiguravajući da se sljedeće bilješke s istom frekvencijom neće spojiti zajedno.

Korak 6: Povratne informacije

To je to za ovaj projekt. Ako imate nešto što ne razumijete ili imate prijedloge, slobodno me kontaktirajte. Budući da je ovo moj prvi Instructables, bio bih jako zahvalan na komentarima i prijedlozima o tome kako poboljšati ovaj sadržaj. Vidimo se sljedeći put!

Preporučeni: