重工电子论坛

标题: 【实验室培训_201810期】+周杭,李向阳+第五周任务(软件) [打印本页]

作者: 周杭    时间: 2018-12-15 15:32
标题: 【实验室培训_201810期】+周杭,李向阳+第五周任务(软件)
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

//当按键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
还可以,总算比较规范了




欢迎光临 重工电子论坛 (http://cqutlab.cn/) Powered by Discuz! X3.1