周杭 发表于 2018-12-15 15:32:23

【实验室培训_201810期】+周杭,李向阳+第五周任务(软件)

1、任务要求:
通过使用SR04超声波模块进行试验,根据输出的距离改变跑马灯的样式,并根据按键的输入状态输出不同的尺寸(公制【米,厘米】,英制【英寸】)。
2、工作环境:
本实验是通过arduino编写的,并用到了SR04超声波模块。
3、实现步骤:
a:按键1控制输出厘米(cm)。
b:按键2控制输出米(m)。
c:按键3控制输出英寸(in)。
在a中当距离小于或等于10时,灯正向流水;
大于10且小于等于100时反向流水;
大于100时从中间向两边流水;
b,c中同理。

//当按键1按下
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;
}
}
}
//当按键2按下
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;
}
}
}
//当按键3按下
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、实验效果:

鲁亮 发表于 2018-12-18 14:56:58

还可以,总算比较规范了
页: [1]
查看完整版本: 【实验室培训_201810期】+周杭,李向阳+第五周任务(软件)