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, FMỗ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.
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
}
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