1、任务要求:
通过使用SR04超声波模块进行试验,根据输出的距离改变跑马灯的样式,并根据按键的输入状态输出不同的尺寸(公制【米,厘米】,英制【英寸】)。
2、工作环境:
本实验是通过arduino编写的,并用到了SR04超声波模块。
3、实现步骤:
a:按键1控制输出厘米(cm)。
b:按键2控制输出米(m)。
c:按键3控制输出英寸(in)。
在a中当距离小于或等于10时,灯正向流水;
大于10且小于等于100时反向流水;
大于100时从中间向两边流水;
b,c中同理。
[AppleScript] syntaxhighlighter_viewsource syntaxhighlighter_copycode
[color=Red]//当按键1按下[/color]
if(val8==LOW)
{
distance = sr04_read();
Serial.print(".....distance is:");
Serial.print(distance);
Serial.print("cm");
Serial.println();
delay(1000);
if(distance<=10.0)
{
for(j=0;j<1;j++)
{
for(i=4;i<8;i++)
{
digitalWrite(i,HIGH);
delay(200);
digitalWrite(i,LOW);
delay(200);
}
break;
}
}
if(distance<=100.0&&distance>10.0)
{for(j=0;j<1;j++)
{for(i=7;i>=4;i--)
{
digitalWrite(i,HIGH);
delay(200);
digitalWrite(i,LOW);
delay(200);
}
break;
}
}
if(distance>100.0)
{ for(j=0;j<1;j++)
{
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
delay(200);
digitalWrite(4,HIGH);
digitalWrite(7,HIGH);
delay(200);
digitalWrite(4,LOW);
digitalWrite(7,LOW);
delay(200);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
break;
}
}
}
[color=Red] //当按键2按下[/color]
if(val9==LOW)
{
distance = (sr04_read())/100.0;
Serial.print(".....distance is:");
Serial.print(distance);
Serial.print("m");
Serial.println();
delay(1000);
if(distance<=0.1)
{
for(j=0;j<1;j++)
{for(i=4;i<8;i++)
{
digitalWrite(i,HIGH);
delay(200);
digitalWrite(i,LOW);
delay(200);
}
break;
}
}
if(distance<=1&&distance>0.1)
{for(j=0;j<1;j++)
{for(i=7;i>=4;i--)
{
digitalWrite(i,HIGH);
delay(200);
digitalWrite(i,LOW);
delay(200);
}
break;
}
}
if(distance>1)
{ for(j=0;j<1;j++)
{digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
delay(200);
digitalWrite(4,HIGH);
digitalWrite(7,HIGH);
delay(200);
digitalWrite(4,LOW);
digitalWrite(7,LOW);
delay(200);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
break;
}
}
}
[color=Red]//当按键3按下[/color]
if(val10==LOW)
{
distance = sr04_read()/2.54;
Serial.print(".....distance is:");
Serial.print(distance);
Serial.print("in");
Serial.println();
delay(1000);
if(distance<=(10.0/2.45))
{for(j=0;j<1;j++)
{for(i=4;i<8;i++)
{
digitalWrite(i,HIGH);
delay(200);
digitalWrite(i,LOW);
delay(200);
}
break;
}
}
if(distance<=(100.0/2.45)&&distance>(10.0/2.45))
{for(j=0;j<1;j++)
{for(i=7;i>=4;i--)
{
digitalWrite(i,HIGH);
delay(200);
digitalWrite(i,LOW);
delay(200);
}
break;
}
}
if(distance>(100.0/2.45))
{ for(j=0;j<1;j++)
{digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
delay(200);
digitalWrite(4,HIGH);
digitalWrite(7,HIGH);
delay(200);
digitalWrite(4,LOW);
digitalWrite(7,LOW);
delay(200);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
break;
}
}
}
4、实验效果:
|