Мазмұны:

Wii Nunchuck синтезаторы: 4 қадам
Wii Nunchuck синтезаторы: 4 қадам

Бейне: Wii Nunchuck синтезаторы: 4 қадам

Бейне: Wii Nunchuck синтезаторы: 4 қадам
Бейне: Wii Remote (Motion plus) + Nunchuk - китайская копия 2024, Желтоқсан
Anonim
Wii Nunchuck синтезаторы
Wii Nunchuck синтезаторы

Музыка әлемі:

Мен музыкаға деген сүйіспеншілігімді соңғы бірнеше жылда алған бағдарламалау тәжірибесімен ұштастыруды шештім. Мен өз мектебімде Тод Мачовердің баяндамасын көргеннен бері өзімнің жеке құралымды жасауға қызығушылық таныттым. Егер сіз оның жұмысымен таныс болмасаңыз, оған Google беріңіз, өйткені ол бірнеше жыл бойы музыканың, технологияның, сондай -ақ олардың шекарасын игеріп келеді (MIT медиа -зертханалары, рок -тобы, гитаралық батыр және т.).

Мен Nunchuck-ты Mozzi дыбыс синтезі кітапханасында жұмыс істейтін Arduino Uno-мен байланыстырдым, себебі екеуі де желіде жақсы құжатталған. Жеңілдік үшін мен Arduino -ға қосылатын WiiChuck тақтасының адаптерін қолданамын. Бұл салыстырмалы түрде қарапайым жоба Nunchuck акселерометрінен өлшенетін қадамға (YZ-Plane) байланысты бірқатар алаңдарды ойнайды. Джойстиктің Y мәні дауыс қаттылығын жоғарылату немесе жұмсақ ету үшін табыспен салыстырылады. Ол сонымен қатар Z-батырмасына байланысты аккордтарды өзгертеді және C-батырмасы басылған кезде фазалық модуляция конвертін қосады. Содан кейін конверт жиілігі Нунчуктан өлшенетін ораммен өзгертіледі (сурет тұтқаны бұрады).

Ресурстар:

  • 1 x Arduino Uno
  • 1 x Wii Nunchuck
  • 1 x WiiChuck адаптері
  • 1 х нан тақтасы үйлесімді 3,5 мм әйел стерео ұясы
  • 1 x 3,5 мм аудио кабель
  • 1 рет қандай да бір динамик (оны тексеру үшін алдымен дыбыстық сигналды қосуға болады
  • 4-5 түрлі түсті сымдар

Қосымша, бірақ ұсынылады:

  • 1 x 330 Ом резисторы
  • 1 x.1 uF конденсатор

1 -қадам: NunChuck -ты қосыңыз

Сіздің әжеңіз Чакқа қосылу
Сіздің әжеңіз Чакқа қосылу
Сіздің әжеңіз Чакқа қосылу
Сіздің әжеңіз Чакқа қосылу
Сіздің әжеңіз Чакқа қосылу
Сіздің әжеңіз Чакқа қосылу

WiiChuck класын Arduino ойын алаңынан көшіру/қою. Бізге PWR және GND түйреуіштерінің декларациясы бар нұсқа қажет болады. Оны WiiChuck.h ретінде сақтаңыз және оны жобаңызбен бір каталогта сақтаңыз.

Енді келесіні Arduino IDE -ге көшіріңіз/қойыңыз және жүктеңіз.

#«Wire.h» қосу //#«WiiChuckClass.h» қосу //, бәлкім, оның WiiChuck.h біз үшін. #«WiiChuck.h» қосу WiiChuck патрон = WiiChuck ();

жарамсыз орнату () {

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

void 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»); } else {Serial.print («-»); }

Serial.print («,»);

// функция емес // if (chuck.buttonC ()) {

if (chuck.buttonC) {Serial.print («C»); } else {Serial.print («-»); }

Serial.println ();

}

Arduino-ны қуат көзінен ажыратыңыз және WiiChuck адаптерін Arduino-дағы 2-5 аналогтық түйреуге қосыңыз.

Қуатқа қайта қосылыңыз және Nunchuck мәндерінің Arduino -ға жіберілетініне және сериялық мониторға басып шығарылатынына көз жеткізіңіз. Егер сіз сандардың өзгеруін көрмесеңіз, қосылуларыңыз жақсы екеніне және Nunchuck жұмыс істейтініне көз жеткізіңіз. Мен Nunchuck сымымның ішкі үзілгенін білместен бұрын бірнеше күн бойы бағдарламалық жасақтаманы жөндеуге тырыстым!

Әрі қарай, біз бәрін Mozzi -ге байланыстырамыз…

2 -қадам: Моцциден танысу

Моцциден танысу
Моцциден танысу

Алдымен сізге Mozzi -дің соңғы нұсқасын жүктеу қажет. Олар қайырымдылықпен қамтамасыз етіледі, сондықтан егер сіз өзіңізді кітапханаға жүктеп алғыңыз келсе, қайырымдылық жасаңыз. Сіз оны кітапханаларыңызға Arduino IDE -ден эскиз> кітапханалар>. ZIP кітапханасын қосу … таңдау арқылы оңай қосуға болады.

Енді біз 3,5 мм құлаққап ұясын нан тақтасына және Arduino -ға қосамыз, сондықтан оған кейін оңай қосыла аламыз (Nunchuck пен адаптерді әзірше ажыратуға болады).

  1. Қалғандарға орын беру үшін ұяшықты тақтаның төменгі оң жақ бұрышына қосыңыз. Ұяшықтың ені 5 түйреуіш болуы керек.
  2. Ортаңғы қатарды жерге сыммен жалғаңыз.
  3. Ұяшықтың ең жоғарғы жолын жоғарыдағы бос жолға қосыңыз (суреттегі 10 -жол). Бұл дыбыстық сигнал беретін сым.
  4. Digital Pin ~ 9 -ды 10 -қатарға қосыңыз.
  5. Arduino -дағы Ground -ді тақтаның жердегі рельсіне қосыңыз.
  6. Сізге резистор мен конденсаторды қолданудың қажеті жоқ, бірақ егер олай болмаса, сіз қатты дыбысты байқай аласыз. ~ 15 кГц -тен жоғары жиілікті жою үшін төмен өту сүзгісі қызметін атқарады.

Arduino IDE -де Mozzi Sinewave эскизін ашыңыз, Файл> Мысалдар> Mozzi> Негізгі> Sinewave. Бұл Моццидің «Сәлем әлемі» баламасы.

Эскизді жүктеп, динамикті тақтаға қосыңыз. Егер сіз әлі тақтаны аудио ұясына қоспаған болсаңыз, дыбыстық сигналды қолдануға болады.

Егер сіз динамиктен тұрақты A4 (440 Гц) дыбысын естімесеңіз, барлық байланыстардың жақсы екеніне көз жеткізіп, қайталап көріңіз.

Әрі қарай, біз Nunchuck -ты Arduino -ға қосамыз!

3 -қадам: Барлығын біріктіру

Барлығын біріктіру
Барлығын біріктіру

Енді біз синхронды толқын жиілігін өзгерту үшін Nunchuck орамасының мәнін қолданамыз.

Arduino IDE ішінен Файл> Мысалдар> Моцзи> Сенсорлар> Пьезо жиілігін таңдаңыз

Біз бұл кодқа Nunchuck -пен жұмыс істеу үшін бірнеше жолдар қосуымыз керек. WiiChuck кітапханасына қосуды қосыңыз және чак деп аталатын WiiChuck нысанын жасаңыз. Сіз сондай -ақ PIEZO_PIN декларациясына түсініктеме бере аласыз немесе оны жоюға болады, өйткені біз оны қолданбаймыз.

#«WiiChuck. H» қосыңыз

WiiChuck патроны = WiiChuck (); // const int PIEZO_PIN = 3; // пьезо үшін аналогтық кіріс түйреуішін орнатыңыз

Енді баптауда бізге мыналарды қосу қажет болады:

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

және соңында updateControl () ішіндегі бірнеше нәрсені өзгерту қажет болады:

жарамсыз updateControl () {

chuck.update (); // соңғы деректерді алу // пьезоны оқу // int piezo_value = mozziAnalogRead (PIEZO_PIN); // мәні 0-1023 int piezo_value = map (Piezo_value орнататын жолға түсініктеме беріңіз және төмендегілерді қосыңыз:

жарамсыз updateControl () {chuck.update (); // соңғы деректерді алу // пьезоны оқу // int piezo_value = mozziAnalogRead (PIEZO_PIN); // мәні 0-1023 // Бізге жоғарыдағы жолдың қажеті жоқ, бірақ орамды сол диапазонға неге салыстырмаймыз? int piezo_value = карта (chuck.readRoll (), -180, 180, 0 1023);

Кодты жүктеңіз және жиілік Nunchuck's Roll сәйкес болуы керек. Оны әр түрлі жиілік диапазонында салыстырып көріңіз. Егер сіз төменде эскизде сенсордың мәні 3 -ке көбейтілмегенін байқамасаңыз, біз қазіргі уақытта 0 Гц -тен 3000 Гц -ке дейін дыбыстарды ойнаймыз.

4 -қадам: Соңғы әсерлер

Соңғы жанасулар
Соңғы жанасулар

Енді сіз алдыңғы қадамнан мен қосқан кодтың соңғы нұсқасын және тағы бірнеше Mozzi мысалдарын жүктеуге дайынсыз (дәлірек айтқанда Phase_Mod_Envelope және Control_Gain). Менің өмірімді жеңілдету үшін мен сондай -ақ pitches.h деп аталатын файлды енгіздім, ол жай таныс атаулармен жиілік мәндерін анықтайды (яғни NOTE_A4).

Мен Mozzi құжаттамасын оқуды ұсынамын, себебі кодтың көп бөлігі Nunchuck кодынан басқа мысалдардан тұрады.

Міне, менің Git репозиторийіме сілтеме. Mozzi кітапханасынан басқа барлық маңызды файлдар енгізілген, олар сіздің веб -сайтыңыздан жаңартылуы керек. WiiMusic.ino -ны жүктеп алып, құрылғыға жүктеп, оның қалай естілетінін естіңіз. Мен сізге өзгеретін параметрлермен ойнауды ұсынамын (карта диапазондарын өзгерту, сандарды бөлу/көбейту және т.б.), осылайша мен іздеген дыбысты таптым.

Рефлексия

Мен өзімді толық аяқтағандай сезінбеймін. Мен бұл жобаға немесе оның дыбысына қанағаттанбаймын дегенді білдірмейді, бірақ мен саусақтарымды жаңа әлемге батқандай сезінемін, мен әлі де зерттегім келеді, сондықтан мен бұл жобадан жаңа тармақты қосамын. жұмыс істеу.

Дегенмен, бұл менің микроконтроллер әлеміне алғашқы шынайы саяхатым болды, сондықтан мен оқу тәжірибесіне өте ризамын. Мен жұмыс істеген жиырма сағатқа жуық уақыт маған өзіме және менің отбасымның әр мүшесіне Рождестволық идеялар берді. Мен бұл жобада басқа біреумен жұмыс жасамағаныма өкінемін, өйткені мен көптеген кеңестер мен нұсқауларды қолдана аламын. Дегенмен, мен өзімнің сынақтарым арқылы көп нәрсені білдім, соның ішінде үш күн бойы шашымды жұлып алу, ешқашан болмаған бағдарламалық жасақтаманың ақауын жою (Nunchuck ішіндегі сым үзілген).

Алға жылжуға әлі де көптеген мүмкіндіктер бар. Мысалы, мен Arduino -ны MIDI контроллері мен құлаққап арасындағы MIDI интерфейсінің бір түрі ретінде MIDI жазбасының параметрлерін өзгерту үшін қолданғым келеді, өйткені таңдау өте көп (дыбыс қаттылығы, конверттің жиілігі, қадамның иілуі), модуляция, вибрато, сіз оны атайсыз). Бұл әлдеқайда икемділікке мүмкіндік береді, соның ішінде параметрлерді түймелермен ауыстыру және C ++ массивіне қатаң кодталмаған аккорды ойнау.

Ұсынылған: