Sisukord:

Laulude tegemine Arduino ja alalisvoolumootoriga: 6 sammu
Laulude tegemine Arduino ja alalisvoolumootoriga: 6 sammu

Video: Laulude tegemine Arduino ja alalisvoolumootoriga: 6 sammu

Video: Laulude tegemine Arduino ja alalisvoolumootoriga: 6 sammu
Video: TAHAN, EI TAHA! - Loore All ja Laulupesa lapsed 2024, Juuli
Anonim
Laulude tegemine Arduino ja alalisvoolumootoriga
Laulude tegemine Arduino ja alalisvoolumootoriga

Teisel päeval, sirvides mõnda artiklit Arduino kohta, märkasin huvitavat projekti, mis kasutas lühikeste meloodiate loomiseks Arduino juhitavaid samm-mootoreid. Arduino kasutas samm -mootori käivitamiseks kindlatel sagedustel, mis vastavad muusikalistele nootidele, PWM (Pulse Width Modulation) tihvti. Ajastades, milliseid sagedusi mängiti, oli samm -mootorist kuulda selget meloodiat.

Kuid kui ma seda ise proovisin, leidsin, et minu samm -mootor ei saa tooni loomiseks piisavalt kiiresti pöörata. Selle asemel kasutasin alalisvoolumootorit, mida on suhteliselt lihtne programmeerida ja ühendada Arduinoga. Tavalist L293D IC -d saab kasutada mootori hõlpsaks juhtimiseks Arduino PWM -tihvtilt ja Arduino natiivse tooni () funktsioon võib tekitada vajaliku sageduse. Minu üllatuseks ei leidnud ma võrgust alalisvoolumootorit kasutavaid näiteid ega projekte ja seega on see juhis minu vastus selle parandamiseks. Alustame!

P. S. Eeldan, et teil on Arduinoga juba kogemusi ning olete kursis selle programmeerimiskeele ja riistvaraga. Peaksite teadma, mis on massiivid, mis on PWM ja kuidas seda kasutada ning kuidas pinge ja vool töötavad. Kui te pole veel kohal või alles alustasite Arduinoga, ärge muretsege: proovige seda alustamislehte Arduino ametlikult veebisaidilt ja tulge tagasi, kui olete selleks valmis.:)

Tarvikud

  • Arduino (ma kasutasin UNO -d, kuid soovi korral võite kasutada ka teist Arduinot)
  • Tavaline 5 V alalisvoolumootor, eelistatavalt selline, millele saab ventilaatori külge kinnitada (vt pilti jaotises "Vooluahela kokkupanek")
  • L293D IC
  • Sama palju nuppe kui noote, mida soovite esitada
  • Leivalaud
  • Jumper juhtmed

1. samm: ülevaade

Projekt töötab järgmiselt: Arduino genereerib antud sagedusel ruutlaine, mille ta väljastab L293D -le. L293D on ühendatud välise toiteallikaga, mida see kasutab mootori toiteks Arduino antud sagedusel. Välistades alalisvoolumootori võlli pöörlemise, on kuulda mootori välja- ja sisselülitamist sagedusel, mis tekitab tooni või noodi. Me võime programmeerida Arduino mängima noote nuppude vajutamisel või neid automaatselt esitama.

Samm: vooluringi kokkupanek

Ringraja kokkupanek
Ringraja kokkupanek
Ringraja kokkupanek
Ringraja kokkupanek

Vooluahela kokkupanemiseks järgige lihtsalt ülaltoodud Fritzingu diagrammi.

Näpunäide: Mootori märkus on kõige paremini kuulda, kui võll ei pöörle. Ma panin oma mootori võllile ventilaatori ja kasutasin mõnda kleeplinti, et hoida ventilaatorit mootori töötamise ajal paigal (vt pilti). See takistas võlli pöörlemist ja andis selge kuuldava tooni. Võimalik, et peate oma mootorilt puhta tooni saamiseks pisut kohandama.

Samm: kuidas vooluring töötab

Kuidas vooluring töötab
Kuidas vooluring töötab

L293D on IC, mida kasutatakse suhteliselt kõrgepinge ja suure vooluga seadmete, näiteks releede ja mootorite juhtimiseks. Arduino ei suuda enamikku mootoreid otse oma väljundist juhtida (ja mootori tagumine EMF võib kahjustada Arduino tundlikku digitaalskeemi), nii et sellist IC -d nagu L293D saab kasutada välise toiteallikaga, et hõlpsalt alalisvoolumootorit juhtida. Signaali sisestamine L293D -sse väljastab sama signaali alalisvoolumootorile, ohustamata Arduino kahjustamist.

Ülal on andmelehe L293D pinout/funktsionaalne skeem. Kuna me sõidame ainult 1 mootoriga (L293D saab sõita 2), vajame ainult ühte IC -i külge. Tihvt 8 on toide, tihvtid 4 ja 5 on GND, tihvt 1 on Arduino PWM -väljund ning tihvtid 2 ja 7 juhivad mootori suunda. Kui tihvt 2 on KÕRGE ja tihvt 7 on LOW, pöörleb mootor ühes suunas ja kui tihvt 2 on LOW ja tihvt 7 on KÕRGE, pöörleb mootor teistpidi. Kuna me ei hooli sellest, mis suunas mootor pöörleb, pole vahet, kas tihvtid 2 ja 7 on madalad või kõrged, kui need erinevad üksteisest. Tihvtid 3 ja 6 ühendatakse mootoriga. Soovi korral saate kõik teise küljega ühendada (tihvtid 9-16), kuid pidage meeles, et toite- ja PWM-tihvtid vahetavad kohti.

Märkus. Kui kasutate Arduinot, millel ei ole iga nupu jaoks piisavalt tihvte, võite kasutada kõigi takistite võrku, et ühendada kõik lülitid ühe analoogpistikuga, nagu käesolevas juhendis. Kuidas see töötab, jääb selle projekti raamest välja, kuid kui olete kunagi kasutanud R-2R DAC-i, peaksite selle tundma. Pange tähele, et analoogpinna kasutamine nõuab suurte osade koodi ümberkirjutamist, kuna nuppude teeki ei saa kasutada analoognõeltega.

Samm: kuidas kood töötab

Kõigi nuppude käsitsemise hõlbustamiseks kasutasin madleechi raamatukogu nimega “Button”. Esimese asjana lisasin raamatukogu. Järgmisena määratlesin ridades 8-22 Twinkle, Twinkle, Little Star (näidislaul) esitamiseks vajalike nootide sagedused, tihvti, mida kasutan L293D juhtimiseks, ja nupud.

Seadistusfunktsioonis lähtestasin jadaseadmed, nupud ja seadistasin L293D draiveri pin väljundrežiimi.

Lõpuks kontrollisin põhiahelas, kas nuppu on vajutatud. Kui see on olemas, mängib Arduino vastavat nooti ja prindib märkme nime jadamonitorile (kasulik teada saada, millised noodid teie leival on). Kui noot vabastatakse, peatab arduino heli ilma noTone () -ta.

Kahjuks ei suutnud ma raamatukogu ülesehituse tõttu leida võimalust kontrollida, kas nuppu on vajutatud või vabastatud vähem sõna otseses mõttes, kui kasutada 2 tingimust märkme kohta. Selle koodi teine viga on see, et kui vajutate korraga kahte nuppu ja vabastate ühe neist, peatatakse mõlemad noodid, kuna noTone () peatab märkmete genereerimise olenemata sellest, milline noot selle käivitas.

5. samm: laulu programmeerimine

Noodide esitamise asemel nuppude asemel saate programmeerida Arduino automaatselt teie jaoks meloodiat esitama. Siin on esimese visandi muudetud versioon, mis mängib mootoril Twinkle, Twinkle, Little Star. Visandi esimene osa on sama - noodisageduste ja toonPin määratlemine. Uue osa juurde jõuame kell bpm = "100". Seadsin lööki minutis (lööki minutis) ja seejärel kasutan matemaatikat, et selgitada välja millisekundite arv löögi kohta, millele löögisagedus võrdub. Selleks kasutasin tehnikat, mida nimetatakse mõõtmete analüüsiks (ärge muretsege - see pole nii raske, kui tundub). Kui olete kunagi keskkooli keemiakursuse läbinud, kasutasite mõõtühikute vahel teisendamiseks kindlasti mõõtmete analüüsi. Ujukid () tagavad, et midagi võrrandis pole ümardatud lõpuni.

Pärast seda, kui meil on ms/löögisagedus, jagasin või korrutasin selle sobivalt, et leida muusikas leiduvate erinevate nootide kestuste millisekundilised väärtused. Seejärel koostan massiivi igast noodist kronoloogilises järjekorras ja teise märkme iga noodi kestusega. On ülioluline, et iga noodi indeks ühtiks selle kestuse indeksiga, vastasel juhul kõlab teie meloodia. Panen näitena siia Twinkle, Twinkle, Little Star märkmed, kuid võite proovida mis tahes laulu või märkmete jada, mida soovite.

Tõeline maagia toimub silmuse funktsioonis. Iga noodi puhul mängin tooni beat_values massiivis määratud aja. Selle asemel, et kasutada siin viivitust, mille tõttu tooni ei esitataks, salvestasin programmi algusest saadava aja millis () funktsiooniga ja lahutasin selle praegusest ajast. Kui aeg ületab aja, mille määrasin märkme beat_values massiivis viimaseks, peatan noodi. Viide pärast for -tsüklit lisab märkmete vahele tühimiku, tagades, et järgnevad sama sagedusega noodid ei seguneks kokku.

6. samm: tagasiside

See on selle projekti jaoks. Kui millestki ei saa aru või kui teil on ettepanekuid, võtke palun minuga ühendust. Kuna see on minu esimene juhend, siis oleksin väga tänulik kommentaaride ja soovituste eest selle sisu täiustamiseks. Näeme järgmine kord!

Soovitan: