Orodha ya maudhui:

Synthesizer ya Wii Nunchuck: Hatua 4
Synthesizer ya Wii Nunchuck: Hatua 4

Video: Synthesizer ya Wii Nunchuck: Hatua 4

Video: Synthesizer ya Wii Nunchuck: Hatua 4
Video: Arduino: Cómo conectar el Nunchuk de la WII | TechKrowd 2024, Julai
Anonim
Kiambatisho cha Wii Nunchuck
Kiambatisho cha Wii Nunchuck

Ulimwengu wa Muziki wa Wii:

Niliamua hatimaye kuchanganya upendo wangu wa muziki na uzoefu mdogo wa programu niliyoipata katika miaka michache iliyopita. Nimekuwa na hamu ya kuunda ala yangu mwenyewe tangu nilipoona mazungumzo na Tod Machover shuleni kwangu. Ikiwa haujui kazi yake mpe Google, kwani amekuwa akishinikiza mipaka ya muziki, teknolojia, na vile vile hupishana kwa miaka kadhaa sasa (maabara ya media ya MIT, Rock Band, Guitar Hero nk.).

Nimeunganisha Nunchuck yangu na Arduino Uno inayoendesha kwenye maktaba ya usanisi wa sauti ya Mozzi kwa sababu ya utumiaji mzuri wa kumbukumbu zote mbili mkondoni. Kwa urahisi, ninatumia adapta ya mkate ya WiiChuck ambayo huziba ndani ya Arduino. Mradi huu rahisi hucheza safu kadhaa za viunzi kulingana na Pitch (YZ-Plane) inayopimwa kutoka kwa kipaza sauti cha Nunchuck. Thamani ya furaha ya Y ni ramani ya faida ili kufanya lami iwe juu au laini. Inabadilisha pia gumzo kulingana na Kitufe cha Z-na inawasha bahasha ya kusanisi ya awamu wakati Kitufe cha C-kinabanwa. Mzunguko wa bahasha hubadilishwa na Gombo iliyopimwa kutoka kwa Nunchuck (picha inayogeuza kitovu).

Rasilimali:

  • 1 x Arduino Uno
  • 1 x Wii Nunchuck
  • 1 x WiiChuck Adapter
  • 1 x ubao wa mkate unaofaa 3.5mm kike stereo jack
  • 1 x 3.5mm kebo ya sauti
  • 1 x spika ya aina fulani (Unaweza kuziba buzzer mwanzoni kuijaribu
  • Waya 4-5 za rangi anuwai

Hiari lakini inapendekezwa:

  • 1 x 330 kontena la Ohm
  • 1 x.1 uF capacitor

Hatua ya 1: Kuingiza NunChuck Yako

Kuingiza NunChuck Yako
Kuingiza NunChuck Yako
Kuingiza NunChuck Yako
Kuingiza NunChuck Yako
Kuingiza NunChuck Yako
Kuingiza NunChuck Yako

Nakili / Bandika darasa la WiiChuck kutoka Uwanja wa michezo wa Arduino. Tutahitaji toleo na tamko la pini za PWR na GND. Hifadhi kama WiiChuck.h na uiweke kwenye saraka sawa na mradi wako.

Sasa nakala / weka zifuatazo kwenye Arduino IDE na uipakie.

# pamoja na "Wire.h" // # ni pamoja na "WiiChuckClass.h" // uwezekano mkubwa wa WiiChuck.h kwa sisi wengine. # pamoja na "WiiChuck.h" WiiChuck chuck = WiiChuck ();

usanidi batili () {

// nunchuck_init (); Serial. Kuanza (115200); kuanza (); chuck.update (); //chuck.calibrateJoy (); }

kitanzi batili () {

kuchelewesha (20); chuck.update ();

Printa ya serial (chuck.readPitch ());

Serial.print (","); Serial.print (chuck.readRoll ()); Serial.print (",");

Serial.print (chuck.readJoyX ());

Serial.print (","); Printa ya serial (chuck.readJoyY ()); Serial.print (",");

ikiwa (chuck.buttonZ) {

Serial.print ("Z"); } mwingine {Serial.print ("-"); }

Serial.print (",");

// sio kazi // ikiwa (chuck.buttonC ()) {

ikiwa (chuck.buttonC) {Serial.print ("C"); } mwingine {Serial.print ("-"); }

Serial.println ();

}

Tenganisha Arduino yako kutoka kwa nguvu na unganisha adapta yako ya WiiChuck kwenye Pini za Analog 2-5 kwenye Arduino yako.

Unganisha kwenye umeme tena na uhakikishe kuwa maadili ya Nunchuck yanatumwa kwa Arduino yako na kuchapishwa kwa Monitor Monitor. Ikiwa hauoni mabadiliko yoyote katika nambari hakikisha kuwa unganisho ni nzuri, na wewe ni Nunchuck inafanya kazi. Nilitumia siku chache kujaribu kurekebisha programu kabla ya kugundua waya wangu wa Nunchuck umevunjika ndani!

Ifuatayo, tutaunganisha kila kitu hadi Mozzi…

Hatua ya 2: Kuijua Mozzi

Kuijua Mozzi
Kuijua Mozzi

Kwanza, utahitaji kupakua toleo la hivi karibuni la Mozzi. Zinachochewa na michango kwa hivyo toa ikiwa unahisi na unapakua maktaba. Unaweza kuiongeza kwa maktaba yako kwa urahisi kwa kuchagua Mchoro> Maktaba> Ongeza Maktaba ya ZIP… kutoka Arduino IDE.

Sasa tutaunganisha kipaza sauti cha 3.5mm kwenye ubao wa mkate na Arduino ili tuweze kuungana nayo kwa urahisi baadaye (unaweza kufungua Nunchuck na adapta kwa sasa).

  1. Chomeka Jack yako kwenye kona ya chini kulia ya ubao ili kutoa nafasi kwa wengine. Jack inapaswa kuwa na pini 5 kwa upana.
  2. Unganisha safu ya katikati na ardhi na waya ya kuruka.
  3. Unganisha safu ya juu kabisa ya jack na safu tupu hapo juu (Mstari wa 10 kwenye picha). Hii ni waya iliyobeba ishara ya sauti.
  4. Unganisha Pini ya Dijitali ~ 9 hadi safu ya 10 pia.
  5. Unganisha chini kwenye Arduino yako kwa reli ya chini kwenye ubao wa mkate.
  6. Sio lazima utumie kontena na capacitor lakini bado unaweza kugundua kishindo cha juu ikiwa hautaki. Inafanya kama kichujio cha kupitisha cha chini ili kuondoa masafa juu ya ~ 15 kHz.

Fungua mchoro wa Sinewave wa Mozzi katika Arduino IDE kwa kuchagua Faili> Mifano> Mozzi> Misingi> Sinewave. Kimsingi hii ni sawa na "Hello World" ya Mozzi.

Pakia mchoro na ingiza spika kwenye ubao wa mkate. Unaweza kutumia buzzer pia ikiwa haujaweka waya kwenye mkate wa sauti bado.

Ikiwa hausiki A4 (440Hz) inayokuja kutoka kwa spika yako hakikisha miunganisho yako yote ni nzuri na jaribu tena.

Ifuatayo, tutaunganisha Nunchuck na Arduino!

Hatua ya 3: Kuiweka Pamoja

Kuiweka Pamoja
Kuiweka Pamoja

Sasa tutatumia thamani ya roll kutoka Nunchuck kubadilisha mzunguko wa Sinewave.

Kutoka Arduino IDE Chagua Faili> Mifano> Mozzi> Sensorer> Frequency ya Piezo

Tutahitaji kuongeza mistari michache kwenye nambari hii ili kuifanya ifanye kazi na Nunchuck. Ongeza ni pamoja na maktaba ya WiiChuck na ujumuishe kitu cha WiiChuck kinachoitwa chuck. Unaweza pia kutoa maoni juu ya tamko la PIEZO_PIN au ufute tu kwani hatutatumia.

# pamoja na "WiiChuck. H"

WiiChuck chuck = WiiChuck (); // const int PIEZO_PIN = 3; // weka pini ya kuingiza analog kwa piezo

Sasa katika usanidi, tutahitaji kuongeza yafuatayo:

chuck. kuanza (); chuck.update ();

na mwishowe tutahitaji kubadilisha vitu kadhaa katika sasisho la Udhibiti ():

Udhibiti wa batili () {

chuck.update (); // pata data ya hivi karibuni ya nunchuck // soma piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // Thamani ni 0-1023 int piezo_value = ramani (Toa maoni kwenye mstari unaoweka piezo_value na ongeza yafuatayo chini:

tupu updateControl () {chuck.update (); // pata data ya hivi karibuni ya nunchuck // soma piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // Thamani ni 0-1023 // Hatuhitaji laini hapo juu lakini kwa nini usichonge ramani kwa upeo huo huo? int piezo_value = ramani (chuck.readRoll (), -180, 180, 0 1023);

Pakia nambari na masafa yanapaswa kufanana na Roll yako ya Nunchuck. Jaribu kuichora kwa masafa tofauti ya masafa. Ikiwa haujaona zaidi hapo chini kwenye mchoro thamani kutoka kwa sensa imeongezeka kwa 3 kwa hivyo sasa tunacheza tani kutoka 0 Hz hadi 3000 Hz.

Hatua ya 4: Kugusa Mwisho

Kugusa Mwisho
Kugusa Mwisho

Sasa uko tayari kupakia toleo la mwisho la nambari ambayo nimeiunga pamoja kutoka kwa hatua ya awali na mifano kadhaa ya Mozzi (Phase_Mod_Envelope, na Control_Gain ili iwe sawa). Ili kurahisisha maisha yangu nilijumuisha pia faili inayoitwa pitches.h ambayo hufafanua tu maadili ya masafa na majina ya kawaida ya maandishi (i.e. NOTE_A4).

Ninashauri kusoma nyaraka za Mozzi kwani nambari nyingi ni sawa kutoka kwa mifano isipokuwa nambari ya Nunchuck.

Hapa kuna kiunga cha hazina yangu ya Git. Faili zote muhimu zimejumuishwa isipokuwa maktaba ya Mozzi ambayo unapaswa kupata kutoka kwa wavuti yao kwa hivyo imesasishwa. Pakua WiiMusic.ino na uipakie kwenye kifaa chako ili usikie inasikikaje. Ninapendekeza ucheze na vigezo ninavyobadilisha (badilisha safu za ramani, gawanya / kuzidisha nambari, n.k.) kwani ndivyo nilivyopata sauti fulani niliyokuwa nikitafuta.

Tafakari

Sijisikii kuwa nimemaliza kabisa. Hiyo sio kusema sijaridhika na mradi huo au sauti inayofanya, lakini nahisi kama nimeingiza vidole vyangu kwenye ulimwengu mpya ambao ninataka kuendelea kuchunguza ili niongeze tawi jipya kutoka kwa mradi huu wakati ninaendelea kufanya kazi.

Bado, kusema kuwa hii ilikuwa safari yangu ya kwanza ya kweli kwenda kwenye ulimwengu wa watawala wadogo kwa hivyo ninashukuru sana kwa uzoefu wa kujifunza. Masaa ishirini au zaidi niliyotumia kuifanya ilinipa maoni ya Krismasi kwangu na kwa kweli kila mshiriki wa familia yangu. Ninajuta kwa kiasi fulani kutofanya kazi kwenye mradi huu na mtu mwingine kwani ningeweza kutumia ushauri na mwongozo mwingi njiani. Walakini, mimi binafsi nilijifunza mengi kupitia majaribio yangu ikiwa ni pamoja na siku tatu za kuvuta nywele zangu kujaribu kujaribu kutatua shida ya programu ambayo haikuwepo (waya wa ndani huko Nunchuck alikuwa amevunjika).

Bado kuna uwezekano kadhaa wa kusonga mbele. Kwa mfano, ningependa kutumia Arduino kama aina ya kiolesura cha MIDI kati ya mtawala wa MIDI na kichwa cha kichwa nje ili kubadilisha vigezo vya noti ya MIDI kwani kuna mengi ya kuchagua kutoka (sauti, cutoff, masafa ya bahasha, bend ya lami, moduli, vibrato, unaipa jina). Hii inaruhusu kubadilika zaidi ikiwa ni pamoja na kubadilisha vigezo na vifungo, na kucheza tu gumzo ambayo haijasimbwa kwa safu ya C ++.

Ilipendekeza: