似乎步长对应关系,+100 -0.1
而且else if (...<600)写在else if (....<500)之前,是错误的,导致后面的500,再次600栏无效..
如果analogRead值和time的倍数有线性的对应关系,(所给代码有误,对应不了,假设对应)
100, 200, 300, 400, 500, 600, 700, 800, 900, 1000 对应1, 0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1
写成函数
int calculateTime(int reading,int timeunit){float rs=100, ts=0.1
return timeunit*(1-ts*int(reading/rs))
}
//整个if else if else if改写成
int newtime=calculateTime(analogRead(A0), time){
if(newtime<0){//读数大于等于1000,不替换原来的time
noTone(2)
delay(time*1000)
}else time=newtime//读数小于1000,兼容后面的代码,替换原来的time..
//后面接原来的乐符代码等等
tone(2,NOTE_G3) //前奏
代码未经实测,只体现思路,领会后调试好
烧写以下代码到UNO:const int EchoPin = 2//超声波信号输入
const int TrigPin = 3//超声波控制信号输出
int currDist = 0
void setup(){
pinMode(EchoPin, INPUT)
for (int pinindex = 3pinindex <8pinindex++) {
pinMode(pinindex, OUTPUT)// set pins 3 to 10 as outputs
}
pinMode(A0,OUTPUT)
pinMode(A1,OUTPUT)
pinMode(A2,OUTPUT)
pinMode(A3,OUTPUT)
digitalWrite(A0,LOW)
digitalWrite(A1,LOW)
digitalWrite(A2,LOW)
digitalWrite(A3,LOW)
Serial.begin(9600)
}
void loop(){
currDist = MeasuringDistance()//读取前端距离
//Serial.println(currDist)
if(currDist >25){
}
//power开关看个人需要,这里没有启用
//else if(currDist <8){
// mpower()
// }
else if(currDist <7){
mpause()
}
else if(currDist <15){
mnext()
}
else if(currDist <25){
mprev()
}
}
long MeasuringDistance() {
long duration
digitalWrite(TrigPin, LOW)
delayMicroseconds(2)
digitalWrite(TrigPin, HIGH)
delayMicroseconds(10)
digitalWrite(TrigPin, LOW)
duration = pulseIn(EchoPin, HIGH)
return duration / 29 / 2
}
//mplay播放
void mplay() {
digitalWrite(A0, HIGH)
delay(100)
digitalWrite(A0, LOW)
Serial.println("mplay")
}
//mprev上一首
void mprev() {
digitalWrite(A1, HIGH)
delay(1000)
digitalWrite(A1, LOW)
Serial.println("mprev")
}
//mnext下一首
void mnext() {
digitalWrite(A2, HIGH)
//return
delay(1000)
digitalWrite(A2, LOW)
Serial.println("mnext")
}
//mpause暂停
void mpause() {
digitalWrite(A0, HIGH)
delay(1000)
digitalWrite(A0, LOW)
Serial.println("mpause")
}
//mpower
//void mpower() {
// digitalWrite(A3, HIGH)
// delay(500)
//digitalWrite(A3, LOW)
// Serial.println("mpower")
//}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)