const int SOUND_PIN = A0;
const int LED_CONTROL_PIN = 5;
const int SOUND_THRESHOLD = 400;
const unsigned long DELAY_TIME_MS = 20000;
bool lampOn = false;
unsigned long turnOnTimestamp = 0;
void setup() {
Serial.begin(115200);
pinMode(LED_CONTROL_PIN, OUTPUT);
digitalWrite(LED_CONTROL_PIN, LOW);
}
void loop() {
int soundValue = analogRead(SOUND_PIN);
if (soundValue < SOUND_THRESHOLD && !lampOn) {
digitalWrite(LED_CONTROL_PIN, HIGH);
lampOn = true;
turnOnTimestamp = millis();
Serial.println("灯已打开 30秒后自动关闭");
delay(500);
}
if (lampOn && (millis() - turnOnTimestamp >= DELAY_TIME_MS)) {
digitalWrite(LED_CONTROL_PIN, LOW);
lampOn = false;
Serial.println("关闭灯");
}
delay(50);
}