首先,使用'如果'比'开关'更通用。例如,如果值是601,您仍然希望LED闪烁,但您当前的代码不会这样做。
你需要的是一个在函数之外定义的持久变量。你不能在setup()中定义它,否则它将不会在loop()中被识别。然后查找从开关读取的值的变化,并相应地调整变量。例如:
int threshold=600;
int prevUp=LOW;
int prevDown=LOW;
const int increment=10;
const int flashPin=13;
const int upButtonPin=12;
const int downButtonPin=11;
const int micPin=0;
void setup() {
pinMode(flashPin,OUTPUT);
pinMode(upButtonPin,INPUT);
pinMode(downButtonPin,INPUT);
digitalWrite(flashPin,LOW);
}
void loop() {
int up=digitalRead(upButtonPin);
int down=digitalRead(downButtonPin);
if (up==HIGH && prevUp==LOW) threshold+=increment;
if (down=HIGH && prevDown==LOW) threshold-=increment;
threshold=constrain(threshold,0,1023);
int (analogRead(micPin)>=threshold){
digitalWrite(flashPin, HIGH);
delay(100);
digitalWrite(flashPin, LOW);
}
prevUp=up;
prevDown=down;
}
请注意,我是如何在此处写入的,阈值将在每次打开设备时重置为600。如果您希望即使在拔下设备时阈值仍然保持不变,您需要使用Arduino的EEPROM。但是这更复杂。让我知道你是否想让我进入它。