Mục lục:
- Bước 1: Chuyển đổi điểm nhạc thành nốt nhạc kỹ thuật số: Giá trị độ trễ
- Bước 2: Chuyển đổi Điểm nhạc thành Ghi chú kỹ thuật số: Giá trị Hertz
- Bước 3: Thiết kế mạch
- Bước 4: Tải lên mã: Cách thực hiện
- Bước 5: Tải lên mã: Tất cả điều đó có nghĩa là gì?
- Bước 6: Đã hoàn thành !!
Video: Số hóa một bài hát với Arduino: 6 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:35
Tôi muốn tạo một dự án kết hợp hai môn học yêu thích của tôi: khoa học và âm nhạc. Tôi đã nghĩ đến tất cả các cách để có thể kết hợp hai miền này và, tôi nghĩ rằng sẽ rất thú vị khi tạo một Arduino chơi Fur Elise trong khi hiển thị cao độ của nốt trong Hertz. Bây giờ, chúng ta hãy bắt đầu xây dựng!
Bạn sẽ cần một Arduino Uno hoặc Mega, rất nhiều cáp jumper, bộ rung Piezo, bảng mạch, màn hình LCD 16 * 2 với tất cả các chân gạt nước và một chiết áp 10k (bạn cũng có thể nghe chúng được gọi là áp kế). Tốt nhất là bạn nên kết hợp tất cả các nguồn cung cấp này lại với nhau trước khi chúng ta bắt đầu xây dựng.
Bước 1: Chuyển đổi điểm nhạc thành nốt nhạc kỹ thuật số: Giá trị độ trễ
Có hai bước để phiên âm kỹ thuật số một ghi chú từ bản nhạc thành số tương đương của nó. Đầu tiên, chúng ta sẽ cần viết thời gian ghi chú kéo dài bằng mili giây. Tôi đã sử dụng một biểu đồ được tìm thấy trực tuyến cho nhiệm vụ này. Dựa trên việc một nốt nhạc có phải là nốt nửa, nốt phần tư, nốt thứ tám, v.v. hay không, tôi đã phiên âm độ dài của nốt đó thành mili giây. Bạn có thể thấy những con số này trong mã của tôi là delay (); hàm và số bên trong dấu ngoặc đơn sẽ là giá trị độ trễ tính bằng mili giây mà chúng tôi đã xác định trong bước này.
Bước 2: Chuyển đổi Điểm nhạc thành Ghi chú kỹ thuật số: Giá trị Hertz
Trước khi bắt đầu bước này, hãy để tôi xác định một số thuật ngữ kỹ thuật. "Giá trị" của ghi chú có thể được sử dụng thay thế cho các từ "cao độ", "giá trị" và "ghi chú". Bây giờ, bạn phải đọc từng nốt của bài hát từ bản nhạc. Sau đó, bạn sẽ phải dịch từng nốt nhạc sang Hertz bằng cách sử dụng một bản nhạc sang bảng Hertz, bạn có thể dễ dàng tìm thấy trên mạng. Một điều cần nhớ là giữa C được liệt kê là C4 trên bảng và cao hơn một quãng tám là C5, v.v. Khi tất cả các nốt này được phiên âm thành Hertz, bạn sẽ đặt các giá trị vào âm hàm (x, y, z); trong đó X là số pin hoặc const int, một cách xác định các biến mà tôi sẽ giải thích sau. Y sẽ là giá trị Hertz mà bạn vừa phiên âm và Z sẽ là thời lượng của nốt nhạc tính bằng mili giây được làm tròn đến hàng trăm gần nhất. Sự trì hoãn(); giá trị sẽ là khoảng thời gian của ghi chú. Bây giờ, chúng ta hãy thiết kế mạch có thể phát nhạc.
Bước 3: Thiết kế mạch
Bây giờ chúng tôi đã dịch tất cả các ghi chú thành các giá trị kỹ thuật số mà máy tính có thể hiểu được, đã đến lúc xây dựng mạch. Bắt đầu bằng cách lấy một breadboard và đặt màn hình LCD với chốt đầu tiên (GND) ở hàng 14. Đặt bộ rung ở bất cứ đâu bạn thích và đặt một chiết áp bên cạnh nó. Mục đích là để sắp xếp mọi thứ thẳng hàng, để giảm thiểu sự lộn xộn của các dây. Đặt Arduino bên cạnh breadboard và kết nối chân 5v với thanh dương của bảng mạch, và chân nối đất với thanh âm. Bây giờ, chúng tôi đã sẵn sàng kết nối jumper giữa Arduino và các thành phần.
Bây giờ, chúng ta hãy nói về các chân trên màn hình LCD và cách đấu dây chúng.
GND là viết tắt của từ nối đất, đây là dây âm trong dòng điện một chiều. Nối dây GND vào thanh ray âm của bảng mạch.
VCC là viết tắt của Voltage at the Common Collector, và đây là nơi bạn kết nối nguồn điện 5 volt (đường ray điện tích cực).
VO là viết tắt của Contrast, đấu dây này vào chân giữa của chiết áp. Kết nối chân trái của chiết áp với thanh nguồn dương và chân phải với thanh nguồn nối đất.
RS là viết tắt của Register Select, và điều này được Arduino sử dụng để cho màn hình biết nơi lưu trữ dữ liệu. Kết nối chân này với chân 12 trên Arduino.
RW là viết tắt của chân Đọc / Ghi, Arduino sử dụng để kiểm tra xem màn hình có hiển thị những gì bạn đã lập trình để hiển thị hay không. Kết nối chốt này với thanh ray âm trên breadboard.
E là viết tắt của Enable, cho màn hình LCD biết những pixel nào cần bật (bật) hoặc tắt (tắt). Kết nối chân này với chân 11 của Arduino.
D4, D5, D6 và D7 là các chân Display điều khiển các ký tự và chữ cái được hiển thị. Kết nối chúng với các chân 5, 4, 3 và 2 của Arduino tương ứng.
Chân A, đôi khi được gắn nhãn LED, là cực dương của đèn nền LED. Kết nối thiết bị này với đường sắt nguồn dương bằng dây hoặc với điện trở 220-ohm. Điện trở tốt hơn để sử dụng lâu hơn vì nó phụ thuộc vào màn hình LCD, nhưng nếu thiết bị không được sử dụng cả ngày lẫn đêm, bạn không cần điện trở.
Chân K, đôi khi cũng được gắn nhãn LED (gây nhầm lẫn), là chân nối đất của LED. Kết nối thiết bị này với đường ray điện mặt đất.
Bước 4: Tải lên mã: Cách thực hiện
Cắm Arduino của bạn vào USB của máy tính. Tải lên mã sau bằng trình lập trình Arduino IDE.
#bao gồm
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
void setup () {
// thiết lập số cột và số hàng của màn hình LCD: lcd.begin (16, 2); // In thông báo ra màn hình LCD. lcd.print ("Hertz Pitch:!"); chậm trễ (1000); void loop () {// phát e4 delay (600); // tạm dừng âm trong 0,6 giây (10, 329,63, 300); // phát e đến bộ rung ở chân 10, kéo dài.3 giây lcd.print (" 329.63 "); // hiển thị thông báo trên màn hình LCD" 329.63"
delay (350); // delay trong.35 giây
lcd.clear (); // xóa màn hình LCD và đặt lại cho thông báo tiếp theo // phát âm báo d4 # (10, 311.13, 300); lcd.print ("311.13"); chậm trễ (350); lcd.clear (); // phát âm e4 (10, 329.63, 300); lcd.print ("329,63"); chậm trễ (350); lcd.clear (); // phát âm điệu d4 # (10, 311.13, 300); lcd.print ("311.13"); chậm trễ (350); lcd.clear (); // phát âm e4 (10, 329.63, 300); lcd.print ("329,63"); chậm trễ (350); lcd.clear (); // phát âm b3 (10, 246.94, 300); lcd.print ("246,94"); chậm trễ (400); lcd.clear (); // phát âm điệu d4 (10, 293.66, 300); lcd.print ("293.66"); chậm trễ (400); lcd.clear (); // phát âm c4 (10, 261.63, 300); lcd.print ("261,63"); chậm trễ (400); lcd.clear (); // phát âm a3 (10, 220, 900); lcd.print ("220.0"); chậm trễ (1000); lcd.clear (); // line60 // helpave // avrdude.failure.eeprom // phát giai điệu d3 (10, 146.83, 300); lcd.print ("146,63"); chậm trễ (350); lcd.clear (); // phát âm báo f3 (10, 174.61, 300); lcd.print ("174,61"); chậm trễ (400); lcd.clear (); // phát âm a3 (10, 220, 300); lcd.print ("220"); chậm trễ (400); lcd.clear (); // phát âm b3 (10, 246.94, 900); lcd.print ("246,94"); chậm trễ (1000); lcd.clear ();
// chơi e3
giai điệu (10, 164,81, 300); lcd.print ("164,81"); chậm trễ (400); lcd.clear (); // phát g3 # tone (10, 207.65, 300); lcd.print ("207,65"); chậm trễ (400); lcd.clear (); // phát âm b3 (10, 246.94, 300); lcd.print ("246,94"); chậm trễ (400); lcd.clear (); // phát âm c4 (10, 261.63, 900); lcd.print ("261,63"); chậm trễ (1000); lcd.clear (); // phát âm e (10, 164.81, 300); lcd.print ("164,81"); chậm trễ (400); lcd.clear (); // phát âm e4 (10, 329.63, 300); lcd.print ("329,63"); chậm trễ (400); lcd.clear (); // phát âm điệu d4 # (10, 311.13, 300); lcd.print ("311.13"); chậm trễ (400); lcd.clear (); // phát âm e4 (10, 329.63, 300); lcd.print ("329,63"); chậm trễ (400); lcd.clear (); // phát âm điệu d4 # (10, 311.13, 300); lcd.print ("311.13"); chậm trễ (400); lcd.clear (); // phát âm e4 (10, 329.63, 300); lcd.print ("329,63"); chậm trễ (400); lcd.clear (); // phát âm b3 (10, 246.94, 300); lcd.print ("246,94"); chậm trễ (400); lcd.clear (); // phát âm điệu d4 (10, 293.66, 300); lcd.print ("293.66"); chậm trễ (400); lcd.clear (); // phát âm c4 (10, 261.63, 300); lcd.print ("261,63"); chậm trễ (400); lcd.clear (); // phát âm báo a3 (10, 220, 900); lcd.print ("220.0"); chậm trễ (1000); lcd.clear (); // phát âm điệu d3 (10, 146.83, 300); lcd.print ("146,83"); chậm trễ (400); lcd.clear (); // phát âm điệu f3 (10, 174.61, 300); // eeprom 20--6 yesno, flash 65--0 noyes lcd.print ("174,61"); chậm trễ (400); lcd.clear (); // phát âm a3 (10, 220, 300); lcd.print ("220.0"); chậm trễ (400); lcd.clear (); // phát âm b3 (10, 246.94, 900); lcd.print ("246,94"); chậm trễ (1000); lcd.clear (); // phát âm báo f3 (10, 174.61, 300); lcd.print ("174,61"); chậm trễ (400); lcd.clear (); // phát âm c4 (10, 261.63, 300); lcd.print ("261,63"); chậm trễ (400); lcd.clear (); // phát âm b3 (10, 246.94, 300); lcd.print ("246,94"); chậm trễ (400); lcd.clear (); // phát âm a3 (10, 220, 900); lcd.print ("220.0"); chậm trễ (1000); lcd.clear (); // phát âm b3 (10, 246.94, 300); lcd.print ("246,94"); chậm trễ (400); lcd.clear (); // phát âm c4 (10, 261.63, 300); lcd.print ("261,63"); chậm trễ (400); lcd.clear (); // phát âm điệu d4 (10, 293.66, 300); lcd.print ("293.66"); chậm trễ (400); lcd.clear (); // phát âm e4 (10, 329.63, 900); lcd.print ("329,63"); chậm trễ (1000); lcd.clear (); // phát âm báo g3 (10, 196, 300); lcd.print ("196.0"); chậm trễ (400); lcd.clear (); // phát âm báo f4 (10, 349.23, 300); lcd.print ("349.23"); chậm trễ (400); lcd.clear (); // phát âm e4 (10, 329.23, 300); lcd.print ("329.23"); chậm trễ (400); lcd.clear (); // phát âm điệu d4 (10, 293.63, 900); lcd.print ("293,63"); chậm trễ (1000); lcd.clear (); // phát âm e3 (10, 164.81, 300); lcd.print ("164,81"); chậm trễ (400); lcd.clear (); // phát âm e4 (10, 329.63, 300); lcd.print ("329,63"); chậm trễ (400); lcd.clear (); // phát âm điệu d4 (10, 293.63, 300); lcd.print ("293,63"); chậm trễ (400); lcd.clear (); // phát âm c4 (10, 261.63, 900); lcd.print ("261,63"); chậm trễ (1000); lcd.clear (); // phát âm điệu d3 (10, 146.83, 300); lcd.print ("146,83"); chậm trễ (400); lcd.clear (); // phát âm điệu d4 (10, 293.63, 300); lcd.print ("293,63"); chậm trễ (400); lcd.clear (); // phát âm c4 (10, 261.63, 300); lcd.print ("261,63"); chậm trễ (400); lcd.clear (); // phát âm b3 (10, 246.94, 900); lcd.print ("246,94"); chậm trễ (1000); lcd.clear (); // phát âm e4 (10, 329.63, 300); lcd.print ("329,63"); chậm trễ (400); lcd.clear (); // phát âm điệu d4 # (10, 311.13, 300); lcd.print ("311.13"); chậm trễ (350); lcd.clear (); // phát âm e4 (10, 329.63, 300); lcd.print ("329,63"); chậm trễ (350); lcd.clear (); // phát âm điệu d4 # (10, 311.13, 300); lcd.print ("311.13"); chậm trễ (350); lcd.clear (); // phát âm e4 (10, 329.63, 300); lcd.print ("329,63"); chậm trễ (350); lcd.clear (); // phát âm b3 (10, 246.94, 300); lcd.print ("246,94"); chậm trễ (400); lcd.clear (); // phát âm điệu d4 (10, 293.66, 300); lcd.print ("293.66"); chậm trễ (400); lcd.clear (); // phát âm c4 (10, 261.63, 300); lcd.print ("261,63"); chậm trễ (400); lcd.clear (); // phát âm a3 (10, 220, 900); lcd.print ("220.0"); chậm trễ (1000); lcd.clear (); // phát âm điệu d3 (10, 146.83, 300); lcd.print ("146,83"); chậm trễ (350); lcd.clear (); // phát âm báo f3 (10, 174.61, 300); lcd.print ("174,61"); chậm trễ (400); lcd.clear (); // phát âm a3 (10, 220, 300); lcd.print ("220.0"); chậm trễ (400); // phát b3 lcd.clear (); giai điệu (10, 246,94, 900); lcd.print ("246,94"); chậm trễ (1000); lcd.clear (); // phát âm e3 (10, 164.81, 300); lcd.print ("164,81"); chậm trễ (400); lcd.clear (); // phát âm g # 3 (10, 207.65, 300); lcd.print ("207,65"); chậm trễ (400); lcd.clear (); // phát âm b3 (10, 246.94, 300); lcd.print ("246,94"); chậm trễ (400); lcd.clear (); // phát âm c4 (10, 261.63, 900); lcd.print ("261,63"); chậm trễ (1000); chậm trễ (300); lcd.clear (); // phát âm e3 (10, 164.81, 300); lcd.print ("164,81"); chậm trễ (400); lcd.clear (); // phát âm e4 (10, 329.63, 300); lcd.print ("329,63"); chậm trễ (400); lcd.clear (); // phát âm điệu d4 # (10, 311.13, 300); lcd.print ("311.13"); chậm trễ (400); lcd.clear (); // phát âm e4 (10, 329.63, 300); lcd.print ("329,63"); chậm trễ (400); lcd.clear (); // phát âm điệu d4 # (10, 311.13, 300); lcd.print ("311.13"); chậm trễ (400); lcd.clear (); // phát âm e4 (10, 329.63, 300); lcd.print ("329,63"); chậm trễ (400); lcd.clear (); // phát âm b3 (10, 246.94, 300); lcd.print ("246,94"); chậm trễ (400); lcd.clear (); // phát âm điệu d4 (10, 293.66, 300); lcd.print ("293.66"); chậm trễ (400); lcd.clear (); // phát âm c4 (10, 261.63, 300); lcd.print ("261,63"); chậm trễ (400); lcd.clear (); // phát âm báo a3 (10, 220, 900); lcd.print ("220.0"); chậm trễ (1000); lcd.clear (); // phát âm điệu d3 (10, 146.83, 300); lcd.print ("146,83"); chậm trễ (400); lcd.clear (); // phát âm báo f3 (10, 174.61, 300); lcd.print ("174,61"); chậm trễ (400); lcd.clear (); // phát âm a3 (10, 220, 300); lcd.print ("220.0"); chậm trễ (400); lcd.clear (); // phát âm b3 (10, 246.94, 900); lcd.print ("246,94"); chậm trễ (1000); lcd.clear (); // phát âm báo f3 (10, 174.61, 300); lcd.print ("174,61"); chậm trễ (400); lcd.clear (); // phát âm c4 (10, 261.63, 300); lcd.print ("261,63"); chậm trễ (400); lcd.clear (); // phát âm b3 (10, 246.94, 300); lcd.print ("246,94"); chậm trễ (400); lcd.clear (); // phát âm báo a3 (10, 220, 900); lcd.print ("220.0"); chậm trễ (1000); lcd.clear (); }
Bước 5: Tải lên mã: Tất cả điều đó có nghĩa là gì?
Hãy định nghĩa một số hàm bằng tiếng Anh, để bạn có thể hiểu được mã.
tone (x, y, z); = phát một giai điệu có cao độ là y Hertz, tới bộ rung ở chốt x, trong z mili giây.
lcd.print ("XYZ"); = in một tin nhắn với các ký tự XYZ ra màn hình LCD. (ví dụ: hiển thị cao độ Hertz)
trễ (x); = tạm dừng trong x mili giây.
const int X = Y = đặt một biến hằng số X thành chân Y và sử dụng X hoặc Y để gán nhiệm vụ cho thiết bị.
lcd.clear (); = xóa màn hình LCD và đặt lại cho một màn hình mới
pinMode (X, OUTPUT); = đặt chân X cho chế độ đầu ra
Khi bạn hiểu tất cả các hàm này, bạn có thể dễ dàng thay thế các biến bằng dữ liệu mà bạn thu thập khi dịch một bài hát và sau đó bạn có thể viết mã bài hát của riêng mình!
Bước 6: Đã hoàn thành !!
Bạn có một Arduino chơi Fur Elise và hiển thị các giá trị nốt trong Hertz, hoặc bạn đã tạo một Arduino phát giai điệu của bài hát bạn đã chọn và hiển thị văn bản mà bạn muốn hiển thị. Cảm ơn bạn đã xem hướng dẫn này và tôi hy vọng bạn sẽ có dự án này trên Arduino.
Đề xuất:
Cách phát một bài hát trên Yamaha EZ-220: 5 bước
Cách phát bài hát trên Yamaha EZ-220 của bạn: Các bước này sẽ giúp bạn phát bài hát của mình bằng sách bài hát
DIY LED-quang kế với Arduino cho các bài học Vật lý hoặc Hóa học: 5 bước (có hình ảnh)
DIY LED-photometer Với Arduino cho các bài học Vật lý hoặc Hóa học: Xin chào! Chất lỏng hoặc các vật thể khác có màu vì chúng phản xạ hoặc truyền một số màu nhất định và lần lượt nuốt (hấp thụ) những màu khác. Với cái gọi là quang kế, những màu sắc (bước sóng) đó có thể được xác định, những màu này bị chất lỏng hấp thụ. Nguyên tắc cơ bản
Bài hát được mã hóa "Twinkle Twinkle Little Star" của Sonic Pi dành cho Mac: 6 bước
Sonic Pi "Twinkle Twinkle Little Star" được mã hóa Bài hát cho Mac: Đây là những hướng dẫn cơ bản về cách viết mã " Twinkle Twinkle Little Star " trên Sonic Pi trên máy Mac
Xóa lời bài hát khỏi bài hát nhiều nhất: 6 bước (có hình ảnh)
Xóa lời bài hát khỏi bài hát nhiều nhất: Điều này sẽ dạy bạn cách loại bỏ giọng hát khỏi hầu hết mọi bài hát. Điều này thật tuyệt vời để tạo bài hát Karaoke của riêng bạn Bây giờ trước khi bắt đầu, tôi muốn bạn biết rằng điều này sẽ không loại bỏ hoàn toàn ca sĩ, nhưng nó sẽ thực hiện khá tốt công việc của nó vì vậy nó đáng
Xây dựng một máy tính rạp hát tại nhà từ một máy tính xách tay bị hỏng và một chiếc Tivo: 10 bước
Xây dựng một máy tính rạp hát tại nhà từ một máy tính xách tay bị hỏng và một chiếc Tivo: Trong phần hướng dẫn này, tôi sẽ chỉ cho bạn cách tạo một chiếc máy tính rạp hát tại nhà từ một chiếc máy tính xách tay (hơi hỏng) và gần như trống rỗng. Đây là một cách tuyệt vời để đánh giá một máy tính rạp hát gia đình (hoặc bộ mở rộng) trông tuyệt vời và hoạt động tốt hơn một