找回密码
 立即注册

QQ登录

超声波测距LED输出小装置制作

来源: 创意制作 26wd 2015-2-27 15:42 显示全部楼层 |阅读模式
本帖最后由 26wd 于 2015-2-27 15:42 编辑

成品图如下:
231009owmlxlmlvxk7xmw9.png


具体所需材料如下一块arduino板 ,一块sensor  5.0拓展板, 一个三色led及 一个超声波模块。接下来我们就开始制作 :首先是接线,接线时要注意把超声波的trig引脚和echo引脚不要接反了具体接线如图所示
(无拓展板)
231105v6zkw69j173p9z41.png

之后就是写程序
  1. const int echopin=3; // echo接3端口
  2. const int trigpin=2; // trig接2端口
  3. int redpin=7;
  4. int bluepin=6;
  5. int greenpin=5; //定义3色led接口
  6.   int a; //定义数字变量1
  7.   int led=13;//定义led接口
  8. int val;//定义数字变量2

  9. void setup()
  10. {
  11.   pinMode(redpin,OUTPUT);
  12.   pinMode(bluepin,OUTPUT);
  13.   pinMode(greenpin,OUTPUT);//设定3色led颜色输出
  14. Serial.begin(9600);  
  15.   pinMode(echopin,INPUT); //设定echo为输入模式
  16.   pinMode(trigpin,OUTPUT);//设定trig为输出模式
  17.   pinMode(led,OUTPUT);//定义led输出
  18. }

  19. void loop()
  20. {

  21.   digitalWrite(trigpin,LOW);
  22.   delayMicroseconds(2);
  23.   digitalWrite(trigpin,HIGH);
  24.   delayMicroseconds(10);
  25.   digitalWrite(trigpin,LOW); //发一个10ms的高脉冲去触发TrigPin
  26.   float distance = pulseIn(echopin,HIGH);//接收高电平时间
  27.   distance = distance/58.0;//计算距离
  28.   Serial.print(distance);  //输出距离



  29.   if(distance<=5)

  30.      {
  31.        for(a=4;a<5;a++)
  32.     {
  33.      digitalWrite(greenpin,HIGH);//定义绿灯高电平
  34.       delay(60);//延时60微秒
  35.       digitalWrite(bluepin,LOW);//定义蓝灯低电平
  36.       delay(60);//延时60微秒
  37.       digitalWrite(redpin,LOW);//定义红灯低电平
  38.       delay(60);//延时60微秒
  39.        }
  40.      }

  41.      if( distance>5&&distance<=10)
  42.       {for(a=4;a<5;a++)
  43.       {
  44.       digitalWrite(greenpin,LOW);//定义绿灯低电平
  45.       delay(60);//延时60微秒
  46.       digitalWrite(bluepin,HIGH);//定义蓝灯高电平
  47.       delay(60);//延时60微秒
  48.       digitalWrite(redpin,LOW);//定义红灯低电平
  49.       delay(60);//延时60微秒
  50.       }

  51.       }

  52.       if(distance>10)
  53.       {
  54.         for(a=4;a<5;a++)
  55.       {
  56.       digitalWrite(greenpin,LOW);//定义绿灯低电平
  57.       delay(60);//延时60微秒
  58.       digitalWrite(bluepin,LOW);//定义蓝灯低电平
  59.       delay(60);//延时60微秒
  60.       digitalWrite(redpin,HIGH);//定义红灯高电平
  61.       delay(60);//延时60微秒
  62.        }
  63.        }
  64.         delay(60);//整个循环持续60微秒
  65. }
复制代码
注意在这个程序的思路里要想让灯发出一种颜色就得让另两种灯没有颜色——熄灭,或者低电平。如果不再for语句中声明一下另两种灯的状态则三中灯是一起亮的于是就变成了白颜色即三原色一起发光。

完成后实测为:高于10cmLED亮绿光,5-10cmLED亮红光,低于5cmLED亮蓝光



回复

使用道具 举报

您可能感兴趣的文章

您需要登录后才可以回帖 登录 | 立即注册

关注0

粉丝0

帖子10

发布主题
社区热门 MORE+
    社区热帖 MORE+