Menu
CoddyTech

Các nốt nhạc trong mảng

Thuộc phần Đầu ra trong hành trình Arduino của Coddy. Bài học 13 trên 24.

Một giai điệu là một danh sách nốt nhạc. Mảng (array) lưu một danh sách giá trị dưới cùng một tên:

int notes[] = {262, 294, 330, 349};  // C, D, E, F

Mỗi giá trị có một vị trí gọi là chỉ số (index), và việc đếm bắt đầu từ 0: notes[0] là 262, notes[1] là 294, còn nốt cuối cùng, notes[3], là 349. Không có notes[4]: đọc vị trí đó sẽ trả về bất cứ thứ gì tình cờ nằm trong bộ nhớ ngay sau mảng.

Chỉ số có thể là một biến. Hãy lưu chỉ số, phát nốt nhạc mà nó trỏ đến, rồi tăng chỉ số lên:

int i = 0;

void loop() {
  tone(8, notes[i]);
  delay(400);
  i = i + 1;
  if (i == 4) {
    i = 0;
  }
}

Mỗi lần loop() chạy, nốt nhạc tiếp theo sẽ phát. Sau nốt cuối cùng, chỉ số quay về 0 và giai điệu bắt đầu lại.

challenge icon

Thử thách

Dễ

Phát lần lượt các nốt C, D, E và F trên chân 8, mỗi nốt kéo dài 400 ms, lặp đi lặp lại:

  • lưu bốn tần số trong một mảng: 262, 294, 330, 349
  • dùng một biến chỉ số để phát nốt tiếp theo mỗi lần loop() chạy
  • sau nốt cuối cùng, quay lại nốt đầu tiên

Nhấn Chạy, rồi nhấn Kiểm tra.

Tự làm thử

const int buzzerPin = 8;
// Tạo mảng (array) các nốt nhạc và biến (variable) chỉ số (index) tại đây

void setup() {
}

void loop() {
  // Phát nốt nhạc ở chỉ số hiện tại, chờ 400 ms rồi chuyển sang nốt tiếp theo
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Đầu ra

Tự luyện tập: Playground Arduino