Tiết lộ: Một số liên kết trong bài viết này là liên kết tiếp thị Amazon và có thể nhận hoa hồng theo chính sách của chương trình.
Về còi Piezo và nút nhấn
Nếu bạn chưa biết về buzzer Piezo và nút nhấn (cách ghim chân, cách chúng hoạt động, cách lập trình ...), hãy tìm hiểu về chúng trong các bài hướng dẫn sau:
Xin lưu ý rằng hướng dẫn này sử dụng chuông buzzer 3-5V, nhưng bạn có thể điều chỉnh nó cho chuông 12V. Bạn có thể tìm hiểu về Arduino - Chuông điện.
Sơ đồ đấu dây
This image is created using Fritzing. Click to enlarge image
Mã Arduino - Âm thanh đơn giản
/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino/arduino-button-piezo-buzzer */constint BUTTON_PIN = 2; // Arduino pin connected to button's pinconstint BUZZER_PIN = 4; // Arduino pin connected to Buzzer's pinvoidsetup() {Serial.begin(9600); // initialize serialpinMode(BUTTON_PIN, INPUT_PULLUP); // set arduino pin to input pull-up modepinMode(BUZZER_PIN, OUTPUT); // set arduino pin to output mode}voidloop() {int buttonState = digitalRead(BUTTON_PIN); // read new stateif (buttonState == LOW) {Serial.println("The button is being pressed");digitalWrite(BUZZER_PIN, HIGH); // turn on }elseif (buttonState == HIGH) {Serial.println("The button is unpressed");digitalWrite(BUZZER_PIN, LOW); // turn off }}
Hướng dẫn từng bước
Kết nối Arduino với PC bằng cáp USB
Mở Arduino IDE, chọn board và cổng đúng
Sao chép mã ở trên và mở bằng Arduino IDE
Nhấp vào nút Tải lên trên Arduino IDE để tải mã lên cho Arduino
Nhấn và giữ nút trong vài giây
Nghe âm thanh của buzzer piezo
Giải thích mã nguồn
Đọc lời giải thích theo từng dòng trong các bình luận của mã nguồn!
Mã Arduino - Giai điệu
/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino/arduino-button-piezo-buzzer */#include"pitches.h"constint BUTTON_PIN = 2; // Arduino pin connected to button's pinconstint BUZZER_PIN = 4; // Arduino pin connected to Buzzer's pin// notes in the melody:int melody[] = {NOTE_E5, NOTE_E5, NOTE_E5,NOTE_E5, NOTE_E5, NOTE_E5,NOTE_E5, NOTE_G5, NOTE_C5, NOTE_D5,NOTE_E5,NOTE_F5, NOTE_F5, NOTE_F5, NOTE_F5,NOTE_F5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5,NOTE_E5, NOTE_D5, NOTE_D5, NOTE_E5,NOTE_D5, NOTE_G5};// note durations: 4 = quarter note, 8 = eighth note, etc, also called tempo:int noteDurations[] = { 8, 8, 4, 8, 8, 4, 8, 8, 8, 8, 2, 8, 8, 8, 8, 8, 8, 8, 16, 16, 8, 8, 8, 8, 4, 4};voidsetup() {Serial.begin(9600); // initialize serialpinMode(BUTTON_PIN, INPUT_PULLUP); // set arduino pin to input pull-up mode}voidloop() {int buttonState = digitalRead(BUTTON_PIN); // read new stateif (buttonState == LOW) { // button is pressedSerial.println("The button is being pressed");buzzer(); }}voidbuzzer() {// iterate over the notes of the melody:intsize = sizeof(noteDurations) / sizeof(int);for (int thisNote = 0; thisNote < size; thisNote++) {// to calculate the note duration, take one second divided by the note type.//e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.int noteDuration = 1000 / noteDurations[thisNote];tone(BUZZER_PIN, melody[thisNote], noteDuration);// to distinguish the notes, set a minimum time between them.// the note's duration + 30% seems to work well:int pauseBetweenNotes = noteDuration * 1.30;delay(pauseBetweenNotes);// stop the tone playing:noTone(BUZZER_PIN); }}
Hướng dẫn từng bước
Sao chép mã ở trên và mở bằng Arduino IDE
Tạo tệp pitches.h trên Arduino IDE bằng:
Hoặc nhấp vào nút ngay phía dưới biểu tượng Serial Monitor và chọn Tab Mới, hoặc dùng phím Ctrl+Shift+N.
Nhập tên tệp pitches.h và nhấn nút OK
Sao chép mã dưới đây và dán nó vào tệp pitches.h được tạo.
Nhấp nút Upload trên Arduino IDE để tải mã lên Arduino
Nhấn nút
Nghe giai điệu của buzzer Piezo
Giải thích mã nguồn
Đọc lời giải thích từng dòng trong các dòng chú thích của mã nguồn!
※ Lưu ý:
Đoạn mã ở trên đang sử dụng hàm delay(). Hàm này làm gián đoạn mã khác trong quá trình phát giai điệu. Để tránh gián đoạn cho mã khác, hãy sử dụng thư viện ezBuzzer thay thế. Thư viện này được thiết kế cho buzzer để kêu bíp hoặc phát giai điệu mà không làm gián đoạn mã khác.
Video Tutorial
Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.