Trong dự án này, chúng tôi sẽ phát triển một bộ tạo âm bằng Arduino Uno. Chúng ta sẽ có các nút giao tiếp với UNO và mỗi nút trong số chúng tạo ra cường độ âm sắc khác nhau. Tần số của âm do UNO tạo ra là như nhau ở mọi bên trong. Đó là cường độ của âm thanh thay đổi theo mỗi lần nhấn. Đây là một trong những cách dễ nhất để tạo đàn piano với Arduino Uno. Cũng kiểm tra mạch Piano này.
Các âm có thể được tăng lên đến 20. Điều này mang lại sự thay đổi giai điệu tốt nhất và những thay đổi mượt mà hơn nhiều. Cường độ của âm được thay đổi bởi PWM (Điều chế độ rộng xung). Ví dụ về PWM được hiển thị trong biểu đồ dưới đây.
Trong PWM, tần số của tín hiệu hoặc khoảng thời gian của tín hiệu (Ton + Toff) luôn không đổi. Chỉ có tỷ lệ thời gian BẬT và TẮT thay đổi. Ví dụ: trong biểu đồ thứ hai trong hình trên, thời gian BẬT là 80% và thời gian TẮT là 20% thời lượng hoàn thành.
Trong biểu đồ thứ ba, thời gian BẬT là 50% và thời gian TẮT là 50% thời lượng hoàn thành. Vì vậy, trong trường hợp đầu tiên, chúng tôi có tỷ lệ thuế là 80% và trong trường hợp thứ hai, chúng tôi có tỷ lệ thuế là 20%.
Với sự thay đổi tỷ lệ nhiệm vụ này, chúng ta có sự thay đổi về Vrms (Giá trị trung bình gốc của điện áp), khi điện áp này được cấp cho bộ rung, nó tạo ra tiếng ồn khác bất cứ khi nào có sự thay đổi trong tỷ lệ nhiệm vụ.
Chúng tôi sẽ lập trình UNO để cung cấp tín hiệu PWM có tỷ lệ nhiệm vụ khác nhau cho từng nút. Vì vậy, chúng tôi có một trình tạo âm sắc trong tay để tạo ra một giai điệu khác nhau với mỗi lần nhấn nút.
Thành phần bắt buộc
Phần cứng: Arduino Uno, Nguồn điện (5v), tụ 1000 uF, tụ 100 nF, Buzzer, các nút (8 cái).
Phần mềm: AURDINO hàng đêm hoặc Atmel studio 6.2
Sơ đồ mạch và giải thích hoạt động
Mạch cho bộ tạo âm được hiển thị trong sơ đồ dưới đây.
Để lọc tiếng ồn từ điện áp cung cấp, các tụ điện được đặt trên các đầu cuối như thể hiện trong sơ đồ.
PWM của Arduino Uno có thể đạt được ở bất kỳ chân nào được ký hiệu là “~” trên bảng mạch PCB. Có sáu kênh PWM trong UNO. Tuy nhiên, chúng tôi không thể sử dụng các chân PWM được thiết lập trên PINS 0-7, vì PINS được ưu tiên cho giao diện nút.
Có lý do để chọn PINS 0-7 làm đầu vào, vì PINS 0-7 đại diện cho PORTD của vi điều khiển. Vì vậy, trong trường hợp sau, chúng ta có thể lấy BYTE hoàn chỉnh của PORTD.
Bây giờ để có được PWM tỷ lệ nhiệm vụ khác, chúng ta sẽ sử dụng lệnh sau.
analogWrite (9, VALUE); |
Từ điều kiện trên ta có thể lấy trực tiếp tín hiệu PWM tại chân tương ứng. Tham số đầu tiên trong ngoặc là để chọn số chân của tín hiệu PWM. Tham số thứ hai là để viết tỷ lệ nhiệm vụ.
Giá trị PWM của Arduino Uno có thể được thay đổi từ 0 đến 255. Với “0” là thấp nhất đến “255” là cao nhất. Với 255 là tỷ lệ nhiệm vụ, chúng tôi sẽ nhận được 5V ở PIN9. Nếu tỷ lệ nhiệm vụ được đưa ra là 125, chúng tôi sẽ nhận được 2,5V ở PIN9. Chúng tôi sẽ chia tỷ lệ nhiệm vụ 0-250 cho 8 nút được giao diện tại PORTD của UNO. Ở đây tôi chọn 25 gia số cho mỗi nút, nhưng đó là sự lựa chọn của bạn.
Với điều đó, chúng ta sẽ có một tín hiệu PWM có tỷ lệ nhiệm vụ thay đổi theo từng nút. Điều này được đưa cho buzzer, chúng tôi có bộ tạo âm sắc. Hoạt động của bộ tạo âm dựa trên Arduino này được giải thích từng bước trong mã C đưa ra bên dưới.