基于ATMEGA328P用3个开关控制3个灯,灯泡只需要亮3秒,然后就关闭,三个开关同时按下去灯可以同时亮,在每一个灯泡中加上提示灯,不开灯的时候是亮的,开灯后是不亮的
时间: 2023-05-23 15:01:03 浏览: 86
这是一个典型的电路控制问题,需要在代码中使用时间延时函数来实现灯泡亮起后持续3秒,并在灯泡上增加提示灯的功能。具体实现过程可以根据开关和灯泡的接法不同而有所区别。以下是一个简单的示例代码:
```cpp
const int LED_PIN_1 = 2; // 第1个灯泡控制引脚
const int LED_PIN_2 = 3; // 第2个灯泡控制引脚
const int LED_PIN_3 = 4; // 第3个灯泡控制引脚
const int LED_INDICATOR_PIN_1 = 5; // 第1个灯泡提示灯控制引脚
const int LED_INDICATOR_PIN_2 = 6; // 第2个灯泡提示灯控制引脚
const int LED_INDICATOR_PIN_3 = 7; // 第3个灯泡提示灯控制引脚
const int SWITCH_PIN_1 = 8; // 第1个开关控制引脚
const int SWITCH_PIN_2 = 9; // 第2个开关控制引脚
const int SWITCH_PIN_3 = 10; // 第3个开关控制引脚
void setup() {
pinMode(LED_PIN_1, OUTPUT);
pinMode(LED_PIN_2, OUTPUT);
pinMode(LED_PIN_3, OUTPUT);
pinMode(LED_INDICATOR_PIN_1, OUTPUT);
pinMode(LED_INDICATOR_PIN_2, OUTPUT);
pinMode(LED_INDICATOR_PIN_3, OUTPUT);
pinMode(SWITCH_PIN_1, INPUT_PULLUP);
pinMode(SWITCH_PIN_2, INPUT_PULLUP);
pinMode(SWITCH_PIN_3, INPUT_PULLUP);
}
void loop() {
bool switch_1_state = digitalRead(SWITCH_PIN_1);
bool switch_2_state = digitalRead(SWITCH_PIN_2);
bool switch_3_state = digitalRead(SWITCH_PIN_3);
digitalWrite(LED_INDICATOR_PIN_1, !switch_1_state);
digitalWrite(LED_INDICATOR_PIN_2, !switch_2_state);
digitalWrite(LED_INDICATOR_PIN_3, !switch_3_state);
if (switch_1_state) {
digitalWrite(LED_PIN_1, HIGH);
delay(3000);
digitalWrite(LED_PIN_1, LOW);
}
if (switch_2_state) {
digitalWrite(LED_PIN_2, HIGH);
delay(3000);
digitalWrite(LED_PIN_2, LOW);
}
if (switch_3_state) {
digitalWrite(LED_PIN_3, HIGH);
delay(3000);
digitalWrite(LED_PIN_3, LOW);
}
}
```
这段代码假设开关按下时为 LOW,灯泡控制引脚接高电平亮起,提示灯控制引脚接低电平亮起。提示灯在不亮的情况下为高电平,即反转后的值。