作者 by 超米 / 2025-03-11 / 暂无评论 / 10 个足迹
**
**
/*
*开发板:Arduino Uno
* 学号:220223433
* 姓名:米热地力·买买提
* 班级:物联网工程2201班
*/
const int BEAT_TIME = 500; // 一拍(四分音符)时长(单位:毫秒)
const float BLINK_RATIO = 0.5; // 一个音符LED点亮和熄灭的时间比例
const int BUZZER_PIN = 9; // 蜂鸣器连接的引脚
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_FS4 370
#define NOTE_G4 392
#define NOTE_A4 440
#define NOTE_B4 494
#define NOTE_C5 523
#define NOTE_D5 587
#define NOTE_E5 659
#define NOTE_G5 784
#define NOTE_A5 880
#define NOTE_B5 988
#define NOTE_F0 0
// 加电或复位开发板时,setup函数会被调用一次
void setup() {
pinMode(LED_BUILTIN, OUTPUT); // 设置LED引脚为输出
pinMode(BUZZER_PIN, OUTPUT); // 设置蜂鸣器引脚为输出
}
// 播放一个音符,参数为频率和拍数
void play_one_note(int frequency, float beat) {
digitalWrite(LED_BUILTIN, HIGH); // 点亮LED
tone(BUZZER_PIN, frequency); // 播放音符
int lighten_time = beat * BEAT_TIME * BLINK_RATIO; // 计算点亮时间
delay(lighten_time); // 等待点亮时间
digitalWrite(LED_BUILTIN, LOW); // 熄灭LED
noTone(BUZZER_PIN); // 停止音符
delay(beat * BEAT_TIME * (1 - BLINK_RATIO)); // 休止
}
// 播放休止符
void play_rest(float beat) {
noTone(BUZZER_PIN); // 停止蜂鸣器
digitalWrite(LED_BUILTIN, LOW); // 熄灭LED
delay(beat * BEAT_TIME); // 休止时间
}
// 循环播放
void loop() {
// 第一段
delay(3000);
play_one_note(NOTE_G4, 0.5); // 起
play_one_note(NOTE_C5, 1.5); // 来
play_one_note(NOTE_C5, 0.5); // 不
play_one_note(NOTE_C5, 0.5); // 愿
play_one_note(NOTE_C5, 0.25); // 做
play_one_note(NOTE_G4, 0.5); // 奴
play_one_note(NOTE_A4, 0.25); // 隶
play_one_note(NOTE_B4, 0.25); // 的
play_one_note(NOTE_C5, 1.0); // 人
play_one_note(NOTE_C5, 1.0); // 们
// 第二段
play_rest(0.5); // 休止符
play_one_note(NOTE_E5, 0.5); // 把
play_one_note(NOTE_C5, 0.5); // 我
play_one_note(NOTE_D5, 0.25); // 们
play_one_note(NOTE_E5, 0.25); // 的
play_one_note(NOTE_G5, 0.75); // 血
play_one_note(NOTE_G5, 1.25); // 肉
play_one_note(NOTE_E5, 0.75); // 筑
play_one_note(NOTE_E5, 0.25); // 成
play_one_note(NOTE_C5, 0.75); // 我
play_one_note(NOTE_E5, 0.25); // 们
play_one_note(NOTE_G5, 0.75); // 新
play_one_note(NOTE_E5, 0.25); // 的
play_one_note(NOTE_D5, 1.0); // 长
play_one_note(NOTE_D5, 2.0); // 城
// 第三段
play_one_note(NOTE_A5, 1.0); // 中
play_one_note(NOTE_G5, 1.0); // 华
play_one_note(NOTE_D5, 1.0); // 民
play_one_note(NOTE_E5, 1.0); // 族
play_one_note(NOTE_G5, 0.5); // 到
play_one_note(NOTE_E5, 1.0); // 了
play_one_note(NOTE_G5, 0.5); // 最
play_one_note(NOTE_E5, 0.5); // 危
play_one_note(NOTE_D5, 0.25); // 险
play_one_note(NOTE_E5, 0.25); // 的
play_one_note(NOTE_D5, 0.75); // 时
play_one_note(NOTE_E5, 1.0); // 候
// 第四段
play_rest(0.5); // 休止符
play_one_note(NOTE_G5, 0.5); // 每
play_one_note(NOTE_A5, 0.25); // 个
play_one_note(NOTE_C5, 0.5); // 人
play_one_note(NOTE_C5, 0.5); // 被
play_one_note(NOTE_E5, 0.5); // 迫
play_one_note(NOTE_E5, 0.25); // 着
play_one_note(NOTE_G5, 0.5); // 发
play_one_note(NOTE_G5, 0.25); // 出
play_one_note(NOTE_D5, 0.3); // 最
play_one_note(NOTE_D5, 0.3); // 后
play_one_note(NOTE_D5, 0.3); // 的
play_one_note(NOTE_A4, 1.0); // 吼
play_one_note(NOTE_D5, 1.5); // 声
// 第五段
play_one_note(NOTE_G4, 0.5); // 起
play_one_note(NOTE_C5, 1.5); // 来
play_one_note(NOTE_C5, 0.5); // 起
play_one_note(NOTE_E5, 1.5); // 来
play_one_note(NOTE_E5, 0.5); // 起
play_one_note(NOTE_G5, 4.0); // 来
//第六段
play_one_note(NOTE_C5, 0.5); // 我
play_one_note(NOTE_E5, 0.25); // 们
play_one_note(NOTE_G5, 0.5); // 万
play_one_note(NOTE_G5, 0.25); // 众
play_one_note(NOTE_A5, 1.0); // 一
play_one_note(NOTE_G5, 1.0); // 心
play_one_note(NOTE_E5, 0.5); // 冒
play_one_note(NOTE_C5, 0.25); // 着
play_one_note(NOTE_G5, 0.3); // 敌
play_one_note(NOTE_G5, 0.3); // 人
play_one_note(NOTE_G5, 0.3); // 的
play_one_note(NOTE_E5, 0.5); // 炮
play_rest(0.25); // 休止符
play_one_note(NOTE_C5, 0.5); // 火
play_rest(0.25); // 休止符
play_one_note(NOTE_G4, 1.5); // 前
play_one_note(NOTE_C5, 1.0); // 进
//第七段
play_one_note(NOTE_E4, 0.75); // 冒
play_one_note(NOTE_C5, 0.25); // 着
play_one_note(NOTE_G5, 0.3); // 敌
play_one_note(NOTE_G5, 0.3); // 人
play_one_note(NOTE_G5, 0.3); // 的
play_one_note(NOTE_E5, 0.5); // 炮
play_rest(0.25); // 休止符
play_one_note(NOTE_E5, 0.5); // 火
play_one_note(NOTE_G4, 1.5); // 前
play_one_note(NOTE_C5, 1.0); // 进
play_one_note(NOTE_G4, 1.5); // 前
play_one_note(NOTE_C5, 1.0); // 进
play_one_note(NOTE_G4, 1.5); // 前
play_one_note(NOTE_C5, 1.0); // 进
play_one_note(NOTE_C5, 1.0); // 进
play_rest(1.0); // 休止符
}
独特见解