ዝርዝር ሁኔታ:

Wii Nunchuck Synthesizer: 4 ደረጃዎች
Wii Nunchuck Synthesizer: 4 ደረጃዎች

ቪዲዮ: Wii Nunchuck Synthesizer: 4 ደረጃዎች

ቪዲዮ: Wii Nunchuck Synthesizer: 4 ደረጃዎች
ቪዲዮ: [ $9 ] DIY modular synth Wii nunchuck controller and Multi LFO / Joystic , Acceleration sensor 2024, ሀምሌ
Anonim
Wii ኑንቹክ ሲንቴይዘር
Wii ኑንቹክ ሲንቴይዘር

የ Wii ሙዚቃ ዓለም:

ባለፉት ጥቂት ዓመታት ውስጥ ካገኘሁት ትንሽ የፕሮግራም ተሞክሮ ጋር በመጨረሻ የሙዚቃ ፍቅርን ለማዋሃድ ወሰንኩ። በትምህርት ቤቴ በቶድ ማኮቨር ንግግር ካየሁ ጀምሮ የራሴን መሣሪያ የመፍጠር ፍላጎት ነበረኝ። የሙዚቃውን ፣ የቴክኖሎጅውን ፣ እንዲሁም መስቀለኛ መንገዶቻቸውን ለበርካታ ዓመታት ሲገፋ ስለነበረ ለእሱ ሥራ የማያውቁት ከሆነ ጉግል ይስጡት (MIT ሚዲያ ቤተ -ሙከራዎች ፣ ሮክ ባንድ ፣ ጊታር ጀግና ወዘተ.)።).

በሁለቱም በመስመር ላይ በጥሩ ሁኔታ በሰነድ አጠቃቀም ምክንያት የእኔን ኑንኩክ በሞዚዚ የድምፅ ውህደት ቤተ-መጽሐፍት ላይ ከሚሠራው አርዱinoኖ ኡኖ ጋር አገናኘሁት። ለማቃለል ፣ እኔ በቀጥታ ወደ አርዱዲኖ ውስጥ የሚጣለውን የ WiiChuck የዳቦ ሰሌዳ አስማሚ እጠቀማለሁ። ይህ በአንጻራዊነት ቀላል ፕሮጀክት ከኑኑክክ የፍጥነት መለኪያ በሚለካው በፒች (YZ- አውሮፕላን) ላይ በመመርኮዝ ተከታታይ ሜዳዎችን ይጫወታል። የጆይስቲክ ዬ እሴት ድምፁ ከፍ እንዲል ወይም እንዲለሰልስ ወደ ትርፍ የተቀየሰ ነው። እንዲሁም በ Z- አዝራሩ ላይ በመመስረት ኮሮጆችን ይለውጣል እና ሲ-ቁልፍ ሲጫን የደረጃ ሞጁል ፖስታን ያበራል። ከዚያ የፖስታው ተደጋጋሚነት ከኖንቹክ (ስዕል መዞሪያ ሲዞር) በሚለካው ሮል ይለወጣል።

መርጃዎች

  • 1 x አርዱዲኖ ኡኖ
  • 1 x Wii Nunchuck
  • 1 x WiiChuck አስማሚ
  • 1 x የዳቦ ሰሌዳ ተኳሃኝ 3.5 ሚሜ ሴት ስቴሪዮ መሰኪያ
  • 1 x 3.5 ሚሜ የድምጽ ገመድ
  • 1 x የሆነ ዓይነት ድምጽ ማጉያ (እሱን ለመፈተሽ መጀመሪያ buzzer ን መሰካት ይችላሉ
  • 4-5 የተለያዩ ቀለሞች ሽቦዎች

አማራጭ ግን የሚመከር

  • 1 x 330 Ohm resistor
  • 1 x.1 uF capacitor

ደረጃ 1 - በእርስዎ ኑን ቼክ ውስጥ መሰካት

በእርስዎ NunChuck ውስጥ መሰካት
በእርስዎ NunChuck ውስጥ መሰካት
በእርስዎ NunChuck ውስጥ መሰካት
በእርስዎ NunChuck ውስጥ መሰካት
በእርስዎ NunChuck ውስጥ መሰካት
በእርስዎ NunChuck ውስጥ መሰካት

የ WiiChuck ክፍልን ከአርዲኖ መጫወቻ ስፍራ ይቅዱ/ይለጥፉ። ከ PWR እና GND ፒኖች መግለጫ ጋር ስሪቱን እንፈልጋለን። እንደ WiiChuck.h አድርገው ያስቀምጡት እና እንደ ፕሮጀክትዎ በተመሳሳይ ማውጫ ውስጥ ያስቀምጡት።

አሁን የሚከተለውን ወደ አርዱዲኖ አይዲኢ ይቅዱ/ይለጥፉ እና ይስቀሉት።

#“Wire.h” ን ያጠቃልላል //#“WiiChuckClass.h” ን ያጠቃልላል // ምናልባትም ምናልባትም WiiChuck.h ለሌሎቻችን። #"WiiChuck.h" WiiChuck chuck = WiiChuck ();

ባዶነት ማዋቀር () {

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

ባዶነት loop () {

መዘግየት (20); chuck.update ();

Serial.print (chuck.readPitch ());

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

Serial.print (chuck.readJoyX ());

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

ከሆነ (chuck.buttonZ) {

Serial.print ("Z"); } ሌላ {Serial.print ("-"); }

Serial.print (",");

// ተግባር አይደለም // ከሆነ (chuck.buttonC ()) {

ከሆነ (chuck.buttonC) {Serial.print ("C"); } ሌላ {Serial.print ("-"); }

Serial.println ();

}

አርዱዲኖዎን ከኃይል ያላቅቁ እና የ WiiChuck አስማሚዎን በአርዲኖዎ ላይ ከአናሎግ ፒን 2-5 ጋር ያገናኙት።

እንደገና ከኃይል ጋር ይገናኙ እና የኑኑኩክ እሴቶች ወደ አርዱዲኖዎ እየተላኩ እና ወደ ተከታታይ ሞኒተር መታተማቸውን ያረጋግጡ። በቁጥሮች ውስጥ ምንም ለውጥ ካላዩ ግንኙነቶችዎ ጥሩ መሆናቸውን ያረጋግጡ ፣ እና እርስዎ ኑኑክክ እየሠራ መሆኑን ያረጋግጡ። የኔንቹክ ሽቦ በውስጤ እንደተሰበረ ከመገንዘቤ በፊት ሶፍትዌሮችን ለማስተካከል ጥቂት ቀናት አሳልፌያለሁ!

በመቀጠልም ሁሉንም ነገር ወደ ሞዚዚ እናያይዛለን።..

ደረጃ 2 - ሞዚን ማወቅ

ሞዚን ማወቅ
ሞዚን ማወቅ

በመጀመሪያ ፣ የቅርብ ጊዜውን የሞዚዚ ስሪት ማውረድ ያስፈልግዎታል። እነሱ በስጦታዎች ይቃጠላሉ ስለዚህ በጣም ከተሰማዎት ይለግሱ እና ቤተ -መጽሐፍቱን ያውርዱ። ረቂቅ> ቤተመፃህፍት>. ZIP ቤተ -መጽሐፍትን ከአርዱዲኖ አይዲ በመምረጥ በቀላሉ ወደ ቤተ -መጽሐፍትዎ ማከል ይችላሉ።

አሁን በቀላሉ ከእሱ ጋር ለመገናኘት የ 3.5 ሚሜ የጆሮ ማዳመጫ መሰኪያውን ከዳቦ ሰሌዳው እና ከአርዱዲኖ ጋር እናገናኛለን (ለአሁኑ ኑንችክ እና አስማሚውን መንቀል ይችላሉ)።

  1. ቀሪውን ቦታ ለማስያዝ በቦርዱ የታችኛው ቀኝ ጥግ ላይ ጃክዎን ይሰኩ። መሰኪያው ስፋት 5 ፒን መሆን አለበት።
  2. የመሃከለኛውን ረድፍ ከዝላይ ሽቦ ጋር ወደ መሬት ያገናኙ።
  3. የጃኩን የላይኛው ረድፍ ከላይ ባዶ ረድፍ (በስዕሉ 10 ኛ ረድፍ) ያገናኙ። ይህ የድምፅ ምልክቱን የተሸከመ ሽቦ ነው።
  4. እንዲሁም ዲጂታል ፒን ~ 9 ን ወደ ረድፍ 10 ያገናኙ።
  5. በ Arduino ላይ መሬትዎን በዳቦ ሰሌዳ ላይ ካለው የመሬት ባቡር ጋር ያገናኙ።
  6. የግድ መቃወሚያውን እና capacitor ን መጠቀም አያስፈልግዎትም ፣ ግን ካላደረጉ ከፍ ያለ ጩኸት ያስተውሉ ይሆናል። ከ ~ 15 kHz በላይ ድግግሞሾችን ለማስወገድ እንደ ዝቅተኛ የማለፊያ ማጣሪያ ይሠራል።

ፋይል> ምሳሌዎችን> ሞዚዚን / መሰረታዊዎችን> ሲኔቫቭን በመምረጥ የሞዚዚን Sinewave ንድፍ በአርዱዲኖ አይዲኢ ውስጥ ይክፈቱ። ይህ በመሠረቱ የሞዚዚ “ሰላም ዓለም” አቻ ነው።

ንድፉን ይስቀሉ እና በዳቦ ሰሌዳው ላይ ድምጽ ማጉያ ውስጥ ያስገቡ። የዳቦ ሰሌዳውን ለድምጽ መሰኪያ ገና ካልገጠሙትም እንዲሁ ማጉያ መጠቀም ይችላሉ።

ከእርስዎ ድምጽ ማጉያ የማያቋርጥ A4 (440Hz) ሲመጣ ካልሰሙ ሁሉም ግንኙነቶችዎ ጥሩ መሆናቸውን ያረጋግጡ እና እንደገና ይሞክሩ።

በመቀጠል ኑኑንክ ከአርዱዲኖ ጋር እናገናኘዋለን!

ደረጃ 3 - ሁሉንም በአንድ ላይ ማዋሃድ

ሁሉንም በአንድ ላይ ማዋሃድ
ሁሉንም በአንድ ላይ ማዋሃድ

አሁን የሲንዌቭን ድግግሞሽ ለመለወጥ የጥቅል እሴቱን ከኑኑክክ እንጠቀማለን።

ከአርዱዲኖ አይዲኢ ፋይልን ይምረጡ - ምሳሌዎችን - ሞዚን - ዳሳሾችን> የፔሶ ድግግሞሽ

ከኖንቹክ ጋር እንዲሠራ ለማድረግ በዚህ ኮድ ላይ ጥቂት መስመሮችን ማከል ያስፈልገናል። ወደ WiiChuck ቤተ -መጽሐፍት አንድ ማካተት ያክሉ እና ቹክ ተብሎ የሚጠራውን የ WiiChuck ን ነገር ወዲያውኑ ያነቃቁ። እንዲሁም የ PIEZO_PIN መግለጫን አስተያየት መስጠት ወይም እኛ ስለማንጠቀምበት ብቻ መሰረዝ ይችላሉ።

#"WiiChuck. H" ን ያካትቱ

WiiChuck chuck = WiiChuck (); // const int PIEZO_PIN = 3; // ለፓይዞ የአናሎግ ግብዓት ፒን ያዘጋጁ

አሁን በማዋቀር ላይ የሚከተሉትን ማከል ያስፈልገናል

chuck.begin (); chuck.update ();

እና በመጨረሻ በ updateControl () ውስጥ ጥቂት ነገሮችን መለወጥ ያስፈልገናል

ባዶነት ዝማኔ መቆጣጠሪያ () {

chuck.update (); // የቅርብ ጊዜ የመነሻ ውሂብን ያግኙ//ያንብቡ piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // እሴት 0-1023 int piezo_value = ካርታ (Piezo_value ን ያዘጋጀውን መስመር አስተያየት ይስጡ እና የሚከተሉትን ከታች ያክሉ

ባዶነት updateControl () {chuck.update (); // የቅርብ ጊዜ የመነሻ መረጃን ያግኙ//ያንብቡ piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // እሴቱ 0-1023 // ከላይ ያለውን መስመር አያስፈልገንም ፣ ግን ጥቅሉን ወደ ተመሳሳይ ክልል ለምን አናሳየውም? int piezo_value = ካርታ (chuck.readRoll (), -180, 180, 0 1023);

ኮዱን ይስቀሉ እና ድግግሞሹ ከእርስዎ የኑኑክውክ ጥቅል ጋር መዛመድ አለበት። ወደ ተደጋጋሚ ድግግሞሽ ክልሎች ካርታውን ይሞክሩ። በስዕሉ ውስጥ ከዚህ በታች የበለጠ ካላስተዋሉ ከአነፍናፊው ያለው እሴት በ 3 ተባዝቷል ስለዚህ እኛ በአሁኑ ጊዜ ከ 0 Hz እስከ 3000 Hz ድምፆችን እንጫወታለን።

ደረጃ 4: የመጨረሻ ንክኪዎች

የመጨረሻ ንክኪዎች
የመጨረሻ ንክኪዎች

አሁን ከቀዳሚው ደረጃ እና ጥቂት ተጨማሪ የሞዚዚ ምሳሌዎች (Phase_Mod_Envelope ፣ እና Control_Gain ትክክለኛ ለመሆን) አብረን ያሰብኩትን የኮዱን የመጨረሻ ስሪት ለመስቀል ዝግጁ ነዎት። ሕይወቴን ቀላል ለማድረግ እኔ ደግሞ በሚታወቁ የማስታወሻ ስሞች (ማለትም NOTE_A4) በቀላሉ የድግግሞሽ እሴቶችን የሚገልጽ pitches.h የተባለ ፋይል አካትቻለሁ።

ለኑኑክክ ኮድ ካልሆነ በስተቀር አብዛኛው ኮዱ ከምሳሌዎቹ በቀጥታ ስለሆነ የሞዛዚ ሰነድን እንዲያነቡ ሀሳብ አቀርባለሁ።

ወደ የእኔ Git ማከማቻ ማከማቻ አገናኝ እዚህ አለ። ሁሉም አስፈላጊ ፋይሎች የተካተቱት ከሞዚዚ ቤተ -መጽሐፍት በስተቀር ከድር ጣቢያቸው ማግኘት ስለሚችሉ ወቅታዊ ነው። WiiMusic.ino ን ያውርዱ እና ምን እንደሚመስል ለመስማት ወደ መሣሪያዎ ይስቀሉት። እኔ የፈለግኩትን ልዩ ድምፅ ያገኘሁት በዚህ መንገድ እኔ የምቀይረውን መለኪያዎች (የካርታ ክልሎችን ይለውጡ ፣ ቁጥሮችን ይከፋፍሉ/ያባዙ ፣ ወዘተ.) እንዲጫወቱ ሀሳብ አቀርባለሁ።

ነጸብራቅ

እኔ እንደጨረስኩ አይመስለኝም። ይህ ማለት በፕሮጀክቱ ወይም በሚሰማው ድምጽ አልረካሁም ማለት አይደለም ፣ ግን እኔ እንደቀጠልኩኝ ከዚህ ፕሮጀክት አዲስ ቅርንጫፍ እጨምራለሁ ስለዚህ ማሰስን መቀጠል ወደሚፈልግበት አዲስ ዓለም ውስጥ ጣቶቼ ውስጥ እንደገባሁ ይሰማኛል። መስራት.

ያም ሆኖ ፣ ይህ ማለት ወደ ማይክሮ ተቆጣጣሪዎች ዓለም ውስጥ የመጀመሪያው እውነተኛ ጉዞዬ ስለነበር ለትምህርቱ ተሞክሮ በጣም አመስጋኝ ነኝ። በእሱ ላይ ያሳለፍኩት ሃያ ወይም ከዚያ በላይ ሰዓታት ለራሴ እና በተግባር እያንዳንዱ የቤተሰቤ አባል የገና ሀሳቦችን ሰጡኝ። በመንገድ ላይ ብዙ ምክሮችን እና መመሪያዎችን መጠቀም ስለቻልኩ በዚህ ፕሮጀክት ላይ ከሌላ ሰው ጋር ባለመሥራቴ በጣም አዝናለሁ። ሆኖም ፣ እኔ በጭራሽ ያልነበረውን የሶፍትዌር ችግር ለማረም በመሞከር ሶስት ቀንን ጨምሮ በግሌ በፈተናዎቼ ብዙ ተማርኩ (በኑኑክክ ውስጥ ያለው የውስጥ ሽቦ ተሰብሯል)።

አሁንም ወደፊት የሚሄዱ በርካታ ዕድሎች አሉ። ለምሳሌ ፣ ብዙ መምረጥ ስለሚኖርባቸው (የድምፅ ፣ የመቁረጫ ፣ የፖስታ ድግግሞሽ ፣ የቃጫ ማጠፍ ፣ መለወጫ ፣ ንዝረት ፣ እርስዎ ስም ይሰጡታል)። ይህ በአዝራሮቹ መለኪያዎች መቀያየርን እና በቀላሉ ወደ C ++ ድርድር ያልተመዘገበ ዘፈን መጫወት ጨምሮ ብዙ የበለጠ ተጣጣፊነትን ይፈቅዳል።

የሚመከር: