将第二个实验中红外遥控器代码改写成按钮控制代码
时间: 2024-12-20 18:21:24 浏览: 4
要将红外遥控器的控制代码改写为按钮控制代码,你可以参考以下步骤:
1. **修改硬件连接**:
- 将红外接收模块移除。
- 连接多个按钮到Arduino的不同数字引脚。
2. **修改代码**:
- 按钮1 -> Arduino D2
- 按钮2 -> Arduino D3
- 按钮3 -> Arduino D4
- 按钮4 -> Arduino D5
- 按钮5 -> Arduino D6
- 按钮6 -> Arduino D7
- 按钮7 -> Arduino D8
- 蜂鸣器 -> Arduino D11
### 修改后的代码
```cpp
/********C调*********/
#define L1 262
#define L2 294
#define L3 330
#define L4 349 //低
#define L5 392
#define L6 440
#define L7 494
#define M1 523
#define M2 587
#define M3 659
#define M4 698 //中
#define M5 784
#define M6 880
#define M7 988
#define H1 1046
#define H2 1109
#define H3 1318
#define H4 1397 //高
#define H5 1568
#define H6 1760
#define H7 1976
#define none 0 //空
const int Buzzer = 11; // 定义蜂鸣器接口
const int BUTTON_1 = 2;
const int BUTTON_2 = 3;
const int BUTTON_3 = 4;
const int BUTTON_4 = 5;
const int BUTTON_5 = 6;
const int BUTTON_6 = 7;
const int BUTTON_7 = 8;
void setup() {
pinMode(BUTTON_1, INPUT_PULLUP);
pinMode(BUTTON_2, INPUT_PULLUP);
pinMode(BUTTON_3, INPUT_PULLUP);
pinMode(BUTTON_4, INPUT_PULLUP);
pinMode(BUTTON_5, INPUT_PULLUP);
pinMode(BUTTON_6, INPUT_PULLUP);
pinMode(BUTTON_7, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
if (digitalRead(BUTTON_1) == LOW) {
little_Bee();
}
if (digitalRead(BUTTON_2) == LOW) {
music1();
}
if (digitalRead(BUTTON_3) == LOW) {
piano_L();
}
if (digitalRead(BUTTON_4) == LOW) {
piano_M();
}
if (digitalRead(BUTTON_5) == LOW) {
piano_H();
}
}
// 《小蜜蜂》
void little_Bee() {
int little_Bee[] = { M5, M3, M3, none, M4, M2, M2, none, M1, M2, M3, M4, M5, M5, M5, none, M5, M3, M3, M3, M4, M2, M2, M2, M1, M3, M5, M5, M3, M3, M1, none, M2, M2, M2, M2, M2, M3, M4, none, M3, M3, M3, M3, M3, M4, M5, none, M5, M3, M3, M3, M4, M2, M2, M2, M1, M3, M5, M5, M3, M3, M1, none };
int Bee_delay[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
for (int i = 0; i < (sizeof(little_Bee) / sizeof(little_Bee[0])); i++) {
tone(Buzzer, little_Bee[i]);
delay(500);
noTone(Buzzer);
}
}
// 《有酒今朝醉》
void music1() {
int music1[] = { L5, M1, M2, M3, M5, M5, M6, M5, M3, M2, M1, M1, M2, M3, M3, M2, M1, M2, none, M2, M1, M3, M5, M5, M6, M5, M3, M2, M1, M1, M2, M3, M3, M2, M2, M1, none, M4, M4, M5, M6, M6, M5, M5, M3, M1, M2, none, M1, M2, M3, M5, M5, M6, M5, M3, M2, M1, M1, M2, M3, M3, M2, M2, M1, M1 };
float music1_delay[] = { 0.5, 0.25, 0.25, 0.5, 0.5, 0.75, 0.25, 0.5, 0.25, 0.25, 0.5, 0.25, 0.25, 0.5, 0.5, 0.5, 0.5, 1, 0.5, 0.25, 0.25, 0.5, 0.5, 0.75, 0.25, 0.5, 0.25, 0.25, 0.5, 0.25, 0.25, 0.5, 0.5, 0.5, 0.5, 1, 1, 1, 0.5, 0.5, 1, 1, 0.5, 0.5, 0.5, 0.5, 1, 0.5, 0.25, 0.25, 0.5, 0.5, 0.5, 0.5, 0.5, 0.25, 0.25, 0.5, 0.25, 0.25, 0.5, 0.5, 0.5, 0.25, 0.25, 1 };
for (int i = 0; i < (sizeof(music1) / sizeof(music1[0])); i++) {
tone(Buzzer, music1[i]);
delay(music1_delay[i] * 500);
noTone(Buzzer);
}
}
// C调低电子琴
void piano_L() {
while (1) {
if (digitalRead(BUTTON_1) == LOW) {
tone(Buzzer, L1);
delay(100);
noTone(Buzzer);
} else if (digitalRead(BUTTON_2) == LOW) {
tone(Buzzer, L2);
delay(100);
noTone(Buzzer);
} else if (digitalRead(BUTTON_3) == LOW) {
tone(Buzzer, L3);
delay(100);
noTone(Buzzer);
} else if (digitalRead(BUTTON_4) == LOW) {
tone(Buzzer, L4);
delay(100);
noTone(Buzzer);
} else if (digitalRead(BUTTON_5) == LOW) {
tone(Buzzer, L5);
delay(100);
noTone(Buzzer);
} else if (digitalRead(BUTTON_6) == LOW) {
tone(Buzzer, L6);
delay(100);
noTone(Buzzer);
} else if (digitalRead(BUTTON_7) == LOW) {
tone(Buzzer, L7);
delay(100);
noTone(Buzzer);
}
}
}
// C调中电子琴
void piano_M() {
while (1) {
if (digitalRead(BUTTON_1) == LOW) {
tone(Buzzer, M1);
delay(100);
noTone(Buzzer);
} else if (digitalRead(BUTTON_2) == LOW) {
tone(Buzzer, M2);
delay(100);
noTone(Buzzer);
} else if (digitalRead(BUTTON_3) == LOW) {
tone(Buzzer, M3);
delay(100);
noTone(Buzzer);
} else if (digitalRead(BUTTON_4) == LOW) {
tone(Buzzer, M4);
delay(100);
noTone(Buzzer);
} else if (digitalRead(BUTTON_5) == LOW) {
tone(Buzzer, M5);
delay(100);
noTone(Buzzer);
} else if (digitalRead(BUTTON_6) == LOW) {
tone(Buzzer, M6);
delay(100);
noTone(Buzzer);
} else if (digitalRead(BUTTON_7) == LOW) {
tone(Buzzer, M7);
delay(100);
noTone(Buzzer);
}
}
}
// C调高电子琴
void piano_H() {
while (1) {
if (digitalRead(BUTTON_1) == LOW) {
tone(Buzzer, H1);
delay(100);
noTone(Buzzer);
} else if (digitalRead(BUTTON_2) == LOW) {
tone(Buzzer, H2);
delay(100);
noTone(Buzzer);
} else if (digitalRead(BUTTON_3) == LOW) {
tone(Buzzer, H3);
delay(100);
noTone(Buzzer);
} else if (digitalRead(BUTTON_4) == LOW) {
tone(Buzzer, H4);
delay(100);
noTone(Buzzer);
} else if (digitalRead(BUTTON_5) == LOW) {
tone(Buzzer, H5);
delay(100);
noTone(Buzzer);
} else if (digitalRead(BUTTON_6) == LOW) {
tone(Buzzer, H6);
delay(100);
noTone(Buzzer);
} else if (digitalRead(BUTTON_7) == LOW) {
tone(Buzzer, H7);
delay(100);
noTone(Buzzer);
}
}
}
```
### 说明
- `BUTTON_1` 到 `BUTTON_7` 分别对应不同的功能按钮。
- 在 `loop()` 函数中,通过检测按钮的状态来调用相应的函数。
- `piano_L()`, `piano_M()`, 和 `piano_H()` 函数分别实现低、中、高音调的电子琴功能,通过无限循环检测按钮状态并播放相应音符。
希望这对你有所帮助!如果有任何问题,请随时提问。
阅读全文