Trong dự án này, chúng tôi sẽ xây dựng một phần giải trí bằng Arduino. Tất cả chúng ta đều có thói quen chạm vào Bảng hoặc Bút để tạo bất kỳ bản nhạc ngẫu nhiên nào. Tất nhiên, nó có thể không được coi là một cách cư xử tốt, nhưng tất cả chúng ta đều thích làm điều đó ít nhất một lần. Do đó, tôi đã nghĩ đến việc đưa nó lên cấp độ tiếp theo bằng cách sử dụng khả năng phát âm của Arduino. Khi bạn xây dựng dự án này, bạn sẽ có thể Tạo âm bằng cách Chạm ngón tay vào bất cứ thứ gì dẫn điện và tạo nhịp điệu của riêng bạn, giống như chơi Piano trên lòng bàn tay của bạn. Nghe có vẻ tuyệt vời phải không, hãy để chúng tôi xây dựng nó.
Các thành phần bắt buộc:
Các vật liệu cần thiết cho dự án này được liệt kê dưới đây, không bắt buộc phải gắn vào giống nhau. Một khi bạn nắm bắt được khái niệm, bạn có thể sử dụng cách riêng của mình để xây dựng nó.
- Arduini Pro Mini
- Loa Peizo
- Cảm biến Flex
- Găng tay
- Điện trở 10K
- Bóng bán dẫn BC547
- Pin 9V
Sơ đồ mạch và giải thích:
Sơ đồ mạch cho Arduino Palm Piano này được hiển thị bên dưới.
Dự án sử dụng tổng cộng bốn cảm biến, đó là hai cảm biến flex và hai cặp Darlington hoạt động như một cảm biến cảm ứng. Chúng tôi cũng đã sử dụng hai điện trở kéo xuống R1 và R2, mỗi điện trở có giá trị 10k, sẽ hoạt động như một điện trở kéo xuống cho cảm biến Flex. Ở đây, cảm biến Flex được sử dụng để tạo ra Ba tông màu khác nhau bằng cách sử dụng một ngón tay, dựa trên mức độ uốn cong của nó. Vì vậy, chúng tôi có thể tạo ra 6 âm thanh bằng cách sử dụng hai ngón tay. Tìm hiểu tại đây về Cảm biến linh hoạt.
Cặp Darlington:
Trước khi tiến hành, điều quan trọng là phải biết Darlington là gì và nó hoạt động chính xác như thế nào trong dự án của chúng tôi. Cặp Darlington có thể được định nghĩa là hai bóng bán dẫn lưỡng cực được kết nối theo cách sao cho dòng điện được khuếch đại bởi bóng bán dẫn đầu tiên được khuếch đại thêm bởi bóng bán dẫn thứ hai. Một cặp Darlington được hiển thị trong hình ảnh dưới đây:
Như hình trên, chúng ta đã sử dụng hai bóng bán dẫn BC547 mà bộ thu của chúng được gắn với nhau và bộ phát của bóng bán dẫn đầu tiên được kết nối với Đế của bóng bán dẫn thứ hai. Mạch này hoạt động như một bộ khuếch đại với độ lợi, có nghĩa là bất kỳ tín hiệu nhỏ nào được đưa đến chân đế của bóng bán dẫn thứ nhất cũng đủ để làm lệch chân đế của bóng bán dẫn thứ hai. Cơ thể của chúng ta hoạt động như một mặt đất ở đây vì vậy bất cứ khi nào chúng ta chạm vào đế của bóng bán dẫn, bóng bán dẫn thứ hai sẽ bị sai lệch. Sử dụng điều này vì lợi ích của chúng tôi, chúng tôi đã chế tạo cảm biến cảm ứng cho dự án này.
Chân số 2 và 3 là các chân ngắt trên Arduino sẽ được kéo lên cao bằng cách sử dụng điện trở kéo lên bên trong và sau đó các chân này sẽ được giữ tiếp đất bất cứ khi nào công tắc Darlington đóng lại. Bằng cách này mỗi khi chúng ta chạm vào dây (từ đế của bóng bán dẫn thứ nhất), một ngắt sẽ được kích hoạt từ Arduino.
Sử dụng hai ngón tay chỉ có thể tạo ra hai loại âm do đó tôi cũng đã bổ sung một cảm biến uốn cong sẽ thay đổi âm sắc dựa trên mức độ uốn cong của nó. Tôi đã lập trình để tạo ra ba âm khác nhau trên mỗi ngón tay dựa trên mức độ uốn cong của ngón tay (cảm biến flex). Bạn có thể tăng số lượng nếu bạn muốn có nhiều âm hơn ở đầu ngón tay của mình.
Tôi đã làm bảng hoàn chỉnh trên bảng có lỗ để nó dễ dàng vừa với lòng bàn tay của tôi, nhưng bạn cũng có thể sử dụng bảng mạch. Chỉ cần đảm bảo rằng cơ thể của bạn chạm đất của mạch tại một số điểm. Sau khi bạn hàn mọi thứ, nó sẽ trông giống như thế này
Tôi đã sử dụng hai ngón tay găng tay để cố định dây từ cặp Darlington và cảm biến flex ở vị trí như hình trên. Bạn có thể đưa ra ý tưởng của riêng mình (tốt hơn nếu có thể) để cố định chúng ở vị trí trong khi bạn đang phát âm sắc của mình.
Lập trình Arduino:
Chương trình cho Arduino Tap Tone Generator này khá đơn giản. Chúng tôi chỉ cần để ý xem có sự gián đoạn từ dây Darlington và nếu tìm thấy một dây, chúng tôi phải phát giai điệu phụ thuộc vào mức độ uốn cong của cảm biến flex. Mã hoàn chỉnh được đưa ra ở cuối bài đăng này nhưng tôi đã giải thích một số phần quan trọng bên dưới.
Lưu ý: Chương trình này hoạt động với sự trợ giúp của thư viện “pitch.h”. Vì vậy, hãy đảm bảo rằng bạn đã thêm tệp tiêu đề vào chương trình của mình trước khi biên dịch. Bạn có thể tải xuống tệp tiêu đề pitchhes.h từ đây.
Trong chức năng thiết lập , chúng tôi khởi tạo chân 2 và 3 làm Đầu vào với điện trở kéo lên. Chúng tôi cũng tuyên bố họ như chân ngắt và thực hiện tone1 () khi có một ngắt trên chân 2 và chức năng tone2 () khi có một ngắt trên 3 thứ pin. Các ngắt này sẽ được kích hoạt bất cứ khi nào các chân này nhận được THẤP từ trạng thái kéo lên của chúng.
void setup () {pinMode (2, INPUT_PULLUP); pinMode (3, INPUT_PULLUP); mountInterrupt (digitalPinToInterrupt (2), tone1, LOW); mountInterrupt (digitalPinToInterrupt (3), tone2, LOW); Serial.begin (9600); }
Bên trong chức năng vòng lặp , chúng tôi liên tục kiểm tra mức độ uốn cong của cảm biến flex. Ví dụ, FlexSensor 1 của tôi đã cho các giá trị khoảng 200 khi để phẳng và giảm xuống hết mức 130 khi tôi uốn cong nó đến mức tối đa, vì vậy tôi đã ánh xạ giá trị từ 200 đến 130 dưới dạng 1 đến 3 vì tôi phải chơi 3 kiểu khác nhau của âm. Bạn phải tinh chỉnh hai dòng này dựa trên các giá trị cảm biến Flex và số lượng âm của bạn.
void loop () {flexSensor1 = map (analogRead (A0), 200,130,1,3); // Lập bản đồ với các giá trị của riêng bạn dựa trên cảm biến linh hoạt flexSensor2 = map (analogRead (A1), 170,185,1,3); // Lập bản đồ với các giá trị của riêng bạn dựa trên cảm biến flex của bạn}
Như chúng ta đã thấy trước đó, hàm tone1 () sẽ được thực thi khi phát hiện ngắt trên chân 2. Điều gì xảy ra bên trong hàm tone1 () được trình bày ở trên. Chúng tôi xem xét các giá trị của FlexSensor1 và phát một giai điệu dựa trên Giá trị flexSesnor. Các âm sẽ được phát bằng chức năng Giai điệu của Arduino. Chúng tôi đã giải thích hàm tone () trong dự án trước của chúng tôi.
void tone1 () {if (flexSensor1 == 1) tone (8, NOTE_D4,50); else if (flexSensor1 == 2) tone (8, NOTE_A3,50); else if (flexSensor1 == 3) tone (8, NOTE_G4,50); âm khác (8, NOTE_D4,50); }
Dòng bên dưới dùng để phát âm sắc. Bạn có thể phát bất kỳ giai điệu nào có sẵn trong tệp tiêu đề “pitchhes.h”. Ví dụ, dòng trên sẽ phát chân cắm NOTE_A3 trong thời gian 50 mili giây.
giai điệu (8, NOTE_A3,50); // tone (PinNum, Tên ghi chú, Khoảng thời gian);
Đang làm việc:
Khi phần cứng của bạn đã sẵn sàng, hãy tải mã lên và gắn chúng trên ngón tay của bạn. Đảm bảo rằng cơ thể bạn đang chạm đất của mạch điện tại một thời điểm nào đó. Bây giờ chỉ cần chạm vào bất kỳ vật liệu dẫn điện nào hoặc cơ thể của bạn và bạn sẽ có thể nghe thấy âm thanh tương ứng. Bạn có thể chơi giai điệu hoặc bản nhạc của riêng mình bằng cách chạm vào các khoảng thời gian khác nhau và các vị trí khác nhau.
Các video dưới đây chương trình hoàn chỉnh các hoạt động của dự án thứ. Hy vọng bạn thích xây dựng dự án, mọi góp ý hoặc câu hỏi có thể được đăng trong phần bình luận bên dưới. Ngoài ra, hãy kiểm tra Dự án Trình phát âm thanh Arduino và Trình tạo giai điệu Arduino của chúng tôi.