Mục lục:

Arduino - Piano ba nút Piezo: 4 bước
Arduino - Piano ba nút Piezo: 4 bước

Video: Arduino - Piano ba nút Piezo: 4 bước

Video: Arduino - Piano ba nút Piezo: 4 bước
Video: Hướng dẫn mua linh kiện làm đàn Piano giá rẻ nhất, arduino pro micro, phím nhấn mềm, diode 1N4148 2024, Tháng mười một
Anonim
Image
Image

Đàn piano ba nút là một dự án dành cho người mới bắt đầu với một số kinh nghiệm sử dụng Arduino.

Tôi đã vô tình bị cuốn vào việc cố gắng tạo ra điều này trong khi chơi với bộ rung piezo lần đầu tiên. Nó rất lớn! Khi cố gắng tìm ra các phương pháp khác nhau để làm cho bộ rung êm hơn và thử các tần số khác nhau bằng cách sử dụng hàm tone () và noTone (), tôi nhận ra rằng có thể rất thú vị khi thử kết hợp bộ rung piezo với các thành phần yêu thích khác của Arduino. bộ: các nút và chiết áp.

Vật liệu cần thiết bao gồm:

  • 1 Arduino
  • 1 Breadboard
  • 1 cáp USB
  • Dây nhảy (nhiều màu)
  • 1 Điện trở 330 Kilo-ohm
  • 1 Piezo Buzzer
  • 3 nút đẩy
  • 1 chiết áp

Bước 1: Piezo Buzzer

Piezo Buzzer
Piezo Buzzer

Để bắt đầu, hãy thiết lập piezo trên breadboard của Arduino. Một bên của nó (bên chân ngắn hơn) cần phải chạy xuống đất. Mặt còn lại (phía chân dài hơn) cần kết nối với chân đầu vào kỹ thuật số. Tôi đã chọn kết nối nó với 8.

Bước 2: Đẩy các nút

Nút ấn
Nút ấn
Nút ấn
Nút ấn

Tiếp theo, đã đến lúc thiết lập các nút nhấn. Giống như piezo, các nút nhấn cần kết nối với mặt đất và với chân đầu vào kỹ thuật số.

Bước 3: Chiết áp

Chiết áp
Chiết áp
Chiết áp
Chiết áp

Bước cuối cùng trong quá trình xây dựng vật lý là chiết áp. Chiết áp có một vài dạng khác nhau. Chúng tôi sẽ sử dụng chiết áp như một bộ chia điện áp, vì vậy cả ba chân của nó cần được kết nối.

Chân phải: Thanh âm (Mặt đất)

Chân giữa: Chân tương tự 0

Chân trái: Thanh dương

Bước 4: Mã

Trong khi viết mã cho dự án này, tôi đã tham khảo thông tin về một số loại chức năng cụ thể:

tấn()

noTone () (Cuối cùng thì tôi không sử dụng cái này. Thay vào đó, tôi đã đặt tần suất thành "0".)

bản đồ()

Một tài liệu tham khảo tuyệt vời khác dành cho những người lần đầu sử dụng Piezo Buzzers có thể được tìm thấy tại đây. Mặc dù ý tưởng thay đổi âm thanh của bộ rung piezo có vẻ đơn giản nhưng lúc đầu có thể hơi quá sức!

Hàm tone () có thể được chia thành ba phần:

  1. Ghim (chốt mà bộ rung piezo được kết nối với)
  2. Tần số (tần số của âm thanh tính bằng hertz)
  3. Thời lượng (thời lượng của âm thanh được tính bằng mili giây)

Về cơ bản, nó trông như thế này: giai điệu (pin, tần số, thời lượng). Thành phần thứ ba (thời lượng) là tùy chọn, trong khi hai thành phần còn lại là cần thiết để bộ rung hoạt động. Thành phần "tần số" của chức năng âm báo là thành phần có thể được coi là "âm thanh" được tạo ra bởi bộ rung.

Bạn cũng sẽ nhận thấy rằng mã có hai bit mã khác. Có một số câu lệnh if / else được thiết lập để cho Arduino biết phải làm gì nếu các nút khác nhau được nhấn cũng như để thiết lập nó với "tần số = 0" trong các tình huống không có nút nào được nhấn. Trong các câu lệnh if / else, các hàm map () được sử dụng để ánh xạ tỷ lệ của chiết áp lên một tập hợp các tần số. Chúng có thể được thay đổi! Chơi xung quanh với các giá trị tần số khác nhau để xem bạn có thể nhận được những âm thanh khác nhau nào từ piezo.

Kiểm tra mã mà tôi đã sử dụng để tạo đàn piano ba nút tại đây hoặc kiểm tra bên dưới.

int piezoPin = 8; // Thiết lập pin kết nối với Piezo.

int sensorPin = 0; // Thiết lập chân kết nối với cảm biến (chiết áp). int sensorValue = 0;

int button1 = 5; // Thiết lập các chân đầu vào kết nối với các nút.

int button2 = 4; int button3 = 3;

int tần số = 0;

const int delayTime = 500; // Thiết lập một hằng số cho biến thời gian trễ trong hàm tone ().

void setup () {

pinMode (button1, INPUT_PULLUP); pinMode (button2, INPUT_PULLUP); pinMode (button3, INPUT_PULLUP); }

void loop () {

sensorValue = analogRead (sensorPin); // Đọc cảm biến. // Ánh xạ các giá trị khác nhau của chiết áp thành một bộ tần số cho từng nút trong số ba nút. if (digitalRead (button1) == LOW) {frequency = map (sensorValue, 0, 1023, 400, 499); } else if (digitalRead (button2) == LOW) {frequency = map (sensorValue, 0, 1023, 500, 599); } else if (digitalRead (button3) == LOW) {frequency = map (sensorValue, 0, 1023, 600, 699); } else {tần số = 0; } tone (piezoPin, tần số, delayTime); // Thiết lập các hàm tone () với các biến. }

Đề xuất: