Mục lục:

Bộ tổng hợp Wii Nunchuck: 4 bước
Bộ tổng hợp Wii Nunchuck: 4 bước

Video: Bộ tổng hợp Wii Nunchuck: 4 bước

Video: Bộ tổng hợp Wii Nunchuck: 4 bước
Video: Nunchuk module prototype 2024, Tháng bảy
Anonim
Bộ tổng hợp Wii Nunchuck
Bộ tổng hợp Wii Nunchuck

Thế giới của Wii Music:

Cuối cùng, tôi quyết định kết hợp tình yêu âm nhạc của mình với một chút kinh nghiệm lập trình mà tôi có được trong vài năm qua. Tôi đã quan tâm đến việc tạo ra một nhạc cụ của riêng mình kể từ khi tôi thấy một bài nói chuyện của Tod Machover ở trường của tôi. Nếu bạn không quen với công việc của anh ấy, hãy cho anh ấy một Google, vì anh ấy đã thúc đẩy ranh giới của âm nhạc, công nghệ, cũng như giao điểm của chúng trong một số năm nay (phòng thí nghiệm truyền thông MIT, Ban nhạc Rock, Guitar Hero, v.v.).).

Tôi đã kết nối Nunchuck của mình với Arduino Uno chạy trên thư viện tổng hợp âm thanh Mozzi do việc sử dụng cả hai trên mạng đều được ghi chép đầy đủ. Để dễ dàng, tôi đang sử dụng bộ chuyển đổi breadboard WiiChuck cắm ngay vào Arduino. Dự án tương đối đơn giản này phát một loạt các cao độ tùy thuộc vào Cao độ (YZ-Plane) được đo từ gia tốc kế của Nunchuck. Giá trị Y của cần điều khiển được ánh xạ với độ lợi để làm cho âm vực to hơn hoặc nhẹ nhàng hơn. Nó cũng thay đổi hợp âm tùy thuộc vào Nút Z và bật đường bao điều chế pha khi nhấn Nút C. Sau đó, tần số của phong bì được sửa đổi với Cuộn được đo từ Nunchuck (hình ảnh xoay một núm).

Tài nguyên:

  • 1 x Arduino Uno
  • 1 x Wii Nunchuck
  • 1 x Bộ điều hợp WiiChuck
  • 1 x giắc cắm stereo nữ 3,5 mm tương thích với breadboard
  • 1 x cáp âm thanh 3,5 mm
  • 1 x loa của một số loại (Bạn có thể cắm buzzer lúc đầu để kiểm tra nó
  • 4-5 Dây màu sắc khác nhau

Tùy chọn nhưng được khuyến nghị:

  • Điện trở 1 x 330 Ohm
  • Tụ điện 1 x.1 uF

Bước 1: Cắm NunChuck của bạn

Cắm vào NunChuck của bạn
Cắm vào NunChuck của bạn
Cắm vào NunChuck của bạn
Cắm vào NunChuck của bạn
Cắm vào NunChuck của bạn
Cắm vào NunChuck của bạn

Sao chép / Dán lớp WiiChuck từ Sân chơi Arduino. Chúng ta sẽ cần phiên bản có khai báo các chân PWR và GND. Lưu nó dưới dạng WiiChuck.h và giữ nó trong cùng một thư mục với dự án của bạn.

Bây giờ sao chép / dán phần sau vào Arduino IDE và tải nó lên.

#include "Wire.h" // # include "WiiChuckClass.h" // rất có thể là WiiChuck.h của nó cho phần còn lại của chúng tôi. #include "WiiChuck.h" WiiChuck chuck = WiiChuck ();

void setup () {

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

void loop () {

chậm trễ (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 (",");

nếu (chuck.buttonZ) {

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

Serial.print (",");

// không phải là một hàm // if (chuck.buttonC ()) {

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

Serial.println ();

}

Ngắt kết nối Arduino của bạn khỏi nguồn điện và kết nối bộ điều hợp WiiChuck của bạn với Chân tương tự 2-5 trên Arduino của bạn.

Kết nối lại với nguồn và đảm bảo rằng các giá trị của Nunchuck đang được gửi đến Arduino của bạn và được in ra Serial Monitor. Nếu bạn không thấy bất kỳ sự thay đổi nào trong các con số, hãy đảm bảo rằng các kết nối của bạn đang tốt và Nunchuck đang hoạt động. Tôi đã dành vài ngày để cố gắng sửa phần mềm trước khi nhận ra dây Nunchuck của mình đã bị hỏng bên trong!

Tiếp theo, chúng tôi sẽ kết nối mọi thứ với Mozzi…

Bước 2: Tìm hiểu về Mozzi

Tìm hiểu về Mozzi
Tìm hiểu về Mozzi

Trước tiên, bạn sẽ cần tải xuống phiên bản mới nhất của Mozzi. Chúng được thúc đẩy bởi sự đóng góp, vì vậy hãy đóng góp nếu bạn cảm thấy thích và tải xuống thư viện. Bạn có thể thêm nó vào thư viện của mình một cách dễ dàng bằng cách chọn Sketch> Libraries> Add. ZIP Library… từ Arduino IDE.

Bây giờ chúng ta sẽ kết nối giắc cắm tai nghe 3,5 mm với breadboard và Arduino để chúng ta có thể dễ dàng kết nối với nó sau này (bạn có thể rút phích cắm Nunchuck và bộ chuyển đổi ngay bây giờ).

  1. Cắm Jack của bạn vào góc dưới cùng bên phải của bảng để nhường chỗ cho phần còn lại. Giắc cắm phải rộng 5 chân.
  2. Nối hàng giữa với mặt đất bằng dây nhảy.
  3. Nối hàng trên cùng của giắc cắm với hàng trống phía trên (Hàng 10 trong hình). Đây là dây mang tín hiệu âm thanh.
  4. Kết nối Pin kỹ thuật số ~ 9 với hàng 10.
  5. Kết nối Ground trên Arduino của bạn với thanh nối đất trên breadboard.
  6. Bạn không nhất thiết phải sử dụng điện trở và tụ điện nhưng bạn có thể nhận thấy tiếng kêu the thé nếu không. Nó hoạt động như một bộ lọc thông thấp để loại bỏ các tần số trên ~ 15 kHz.

Mở bản phác thảo Sinewave của Mozzi trong Arduino IDE bằng cách chọn Tệp> Ví dụ> Mozzi> Cơ bản> Sinewave. Đây thực chất là tương đương với "Hello World" của Mozzi.

Tải bản phác thảo lên và cắm loa vào breadboard. Bạn cũng có thể sử dụng bộ rung nếu bạn chưa kết nối breadboard với giắc cắm âm thanh.

Nếu bạn không nghe thấy A4 (440Hz) liên tục phát ra từ loa của mình, hãy đảm bảo tất cả các kết nối của bạn đều tốt và thử lại.

Tiếp theo, chúng ta sẽ kết nối Nunchuck với Arduino!

Bước 3: Kết hợp tất cả lại với nhau

Để tất cả chúng cùng nhau
Để tất cả chúng cùng nhau

Bây giờ chúng ta sẽ sử dụng giá trị cuộn từ Nunchuck để thay đổi tần số của Sinewave.

Từ Arduino IDE, Chọn tệp> Ví dụ> Mozzi> Cảm biến> Tần số Piezo

Chúng tôi sẽ cần thêm một vài dòng vào mã này để làm cho nó hoạt động với Nunchuck. Thêm một bao gồm vào thư viện WiiChuck và khởi tạo một đối tượng WiiChuck được gọi là chuck. Bạn cũng có thể nhận xét về khai báo PIEZO_PIN hoặc chỉ cần xóa nó đi vì chúng tôi sẽ không sử dụng nó.

#include "WiiChuck. H"

WiiChuck chuck = WiiChuck (); // const int PIEZO_PIN = 3; // đặt chân đầu vào tương tự cho piezo

Bây giờ trong quá trình thiết lập, chúng tôi sẽ cần thêm những thứ sau:

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

và cuối cùng chúng ta sẽ cần thay đổi một số thứ trong updateControl ():

void updateControl () {

chuck.update (); // lấy dữ liệu nunchuck mới nhất // đọc piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // giá trị là 0-1023 int piezo_value = map (Nhận xét dòng đặt piezo_value và thêm phần sau vào bên dưới:

void updateControl () {chuck.update (); // lấy dữ liệu nunchuck mới nhất // đọc piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // giá trị là 0-1023 // Chúng ta không cần dòng ở trên nhưng tại sao không ánh xạ cuộn vào cùng một phạm vi? int piezo_value = map (chuck.readRoll (), -180, 180, 0 1023);

Tải lên mã và tần suất phải tương ứng với Nunchuck's Roll của bạn. Hãy thử ánh xạ nó với các dải tần số khác nhau. Nếu bạn không chú ý thêm bên dưới trong bản phác thảo, giá trị từ cảm biến được nhân với 3, vì vậy chúng tôi hiện đang phát các âm từ 0 Hz đến khoảng 3000 Hz.

Bước 4: Những lần chạm cuối cùng

Lần chỉnh sửa cuối cùng
Lần chỉnh sửa cuối cùng

Bây giờ bạn đã sẵn sàng tải lên phiên bản cuối cùng của mã mà tôi đã ghép lại từ bước trước và một vài ví dụ khác của Mozzi (chính xác là Phase_Mod_Envelope và Control_Gain). Để làm cho cuộc sống của tôi dễ dàng hơn, tôi cũng bao gồm một tệp có tên là pitch.h, tệp này chỉ đơn giản xác định các giá trị tần số với các tên nốt quen thuộc (tức là NOTE_A4).

Tôi khuyên bạn nên đọc tài liệu của Mozzi vì phần lớn mã là trực tiếp từ các ví dụ ngoại trừ mã cho Nunchuck.

Đây là một liên kết đến kho lưu trữ Git của tôi. Tất cả các tệp quan trọng đều được bao gồm ngoại trừ thư viện Mozzi mà bạn nên lấy từ trang web của họ để nó được cập nhật. Tải xuống WiiMusic.ino và tải nó lên thiết bị của bạn để nghe âm thanh của nó. Tôi khuyên bạn nên thử với các thông số tôi đang thay đổi (thay đổi phạm vi bản đồ, số chia / nhân, v.v.) vì đó là cách tôi tìm thấy âm thanh cụ thể mà tôi đang tìm kiếm.

Sự phản xạ

Tôi không cảm thấy như tôi đã hoàn thành. Điều đó không có nghĩa là tôi không hài lòng với dự án hoặc âm thanh mà nó tạo ra, nhưng tôi cảm thấy như mình vừa nhúng chân vào một thế giới mới mà tôi muốn tiếp tục khám phá vì vậy tôi sẽ thêm một nhánh mới từ dự án này khi tiếp tục làm việc.

Tuy nhiên, có thể nói đây là cuộc hành trình thực sự đầu tiên của tôi vào thế giới vi điều khiển vì vậy tôi rất biết ơn về trải nghiệm học tập. Hai mươi giờ tôi dành để làm việc đó đã mang lại cho tôi những ý tưởng Giáng sinh cho bản thân và thực tế cho mọi thành viên trong gia đình tôi. Tôi hơi hối tiếc vì đã không làm việc trong dự án này với người khác vì lẽ ra tôi đã có thể sử dụng rất nhiều lời khuyên và hướng dẫn trong suốt quá trình. Tuy nhiên, cá nhân tôi đã học được rất nhiều điều thông qua các lần thử nghiệm của mình, bao gồm cả ba ngày nhổ tóc để gỡ lỗi một sự cố phần mềm chưa từng xảy ra (một dây bên trong Nunchuck đã bị đứt).

Vẫn còn một số khả năng tiếp tục. Ví dụ: tôi rất thích sử dụng Arduino như một loại giao diện MIDI giữa bộ điều khiển MIDI và đầu ra tai nghe để thay đổi các thông số của nốt MIDI vì có rất nhiều lựa chọn (âm lượng, mức cắt, tần số đường bao, độ cong cao độ, điều chế, rung, bạn đặt tên cho nó). Điều này sẽ cho phép linh hoạt hơn rất nhiều bao gồm chuyển đổi các tham số bằng các nút và chỉ cần chơi một hợp âm không được mã hóa cứng thành một mảng C ++.

Đề xuất: