极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 34985|回复: 7

学习笔记28-用arduino控制超声波测试距离显示在LCD上

[复制链接]
发表于 2011-11-30 13:49:23 | 显示全部楼层 |阅读模式
进入这论坛不是很久,自己也是一名arduino初学者,在这论坛上得到各位热心高手的帮助,在此深表感谢!趁着现在有点时间写一篇我朋友写的关于超声波控制的文章跟大家一起学习。
这个实验是通过超声波测试距离,并把所测到的数据实时显示在LCD1602上的,当所测到的距离小于10CM时,LED灯将会点亮,这个程序的应用性比较强,可用于测距,测速,清洗,焊接,碎石、杀菌消毒等。在医学、军事、工业、农业上有很多的应用。在障碍物闪过时可以感应到,日常比较觉的应用有:计算人流量。人到水龙头前自动出水,智能小车避障,机器人系统,灯的感应等。当然,有时候也可以用红外线等其它感应器代替。下面介绍的是超声波关于灯的感应实验。
接线原理图:
首先把LCD Keypad Shield v2.0接在Arduino板子上(LCD Keypad Shield v2.0 的接口与 Arduino Duemilanove,Uno等单片机系列板子是对应的),接着你可以在相应实物上看到下图的引脚(比如你可以在LCD Keypad Shield v2.0上看到GND, VCC, A1, A2, A3等引脚),你只要把看到的引脚按照下面的原理图进行连接就可以了。
[attachimg]2009
这是它的接线图。用的是Arduino LCD1602 字符液晶 输入输出扩展板 LCD Keypad Shield 。超声波是网上卖的一个十六块钱的普通超声波模块。
代码:
  1. #include <LCD4Bit_mod.h>
  2. LCD4Bit_mod lcd = LCD4Bit_mod(2);
  3. int inputPin=15;  
  4. int outputPin=16;
  5. int ledPin = 17;
  6. void setup() {
  7.   pinMode(inputPin, INPUT);
  8.   pinMode(outputPin, OUTPUT);
  9.   pinMode(ledPin,OUTPUT);
  10.   lcd.init();
  11.   lcd.clear();
  12.   lcd.cursorTo(1, 0);
  13.   lcd.printIn("Hello,World!");

  14. }
  15. void display(int number,unsigned char address)
  16. {
  17.   unsigned char a,b,c,d;
  18.     if(number <100)
  19.   digitalWrite(ledPin,LOW);
  20.   if(number >=100 )
  21.   digitalWrite(ledPin,HIGH);  
  22.   a=(number/1000);
  23.   b=(number/100)%10;
  24.   c=(number/10)%10;
  25.   d=number%10;
  26.   lcd.commandWrite(0x80+address);
  27.   lcd.print(a+48);
  28.   lcd.print(b+48);
  29.   lcd.print(c+48);
  30.   lcd.print(46);
  31.   lcd.print(d+48);
  32.   lcd.print(99);
  33.   lcd.print(109);
  34. }
  35. void loop() {
  36.   digitalWrite(outputPin, LOW);
  37.   delayMicroseconds(2);
  38.   digitalWrite(outputPin, HIGH);
  39.   delayMicroseconds(10);
  40.   digitalWrite(outputPin, LOW);   
  41.   float distance = pulseIn(inputPin, HIGH);  
  42.   distance= distance/5.8;   
  43.   lcd.cursorTo(2, 0);  
  44.   lcd.printIn("Distance:");
  45.   display(distance,0x49);

  46. }
复制代码
下面是一个我朋友做传在优酷上的视频效果:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2012-2-28 20:46:21 | 显示全部楼层
哥们儿,为什么我每次弄的时候,每次都有错误呢?你的编程是不是哪出问题了?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-4-7 10:09:38 | 显示全部楼层
GoStop 发表于 2012-2-28 20:46
哥们儿,为什么我每次弄的时候,每次都有错误呢?你的编程是不是哪出问题了?

可能是你的库没有正确吧,可以查一查四位数据发送的库,官方上有
回复 支持 反对

使用道具 举报

发表于 2013-3-8 00:29:06 | 显示全部楼层
プ汏坏疍 发表于 2012-4-7 10:09
可能是你的库没有正确吧,可以查一查四位数据发送的库,官方上有

怎么找库文件啊,能一步步的给我说说吗?谢谢了
回复 支持 反对

使用道具 举报

发表于 2013-3-8 00:53:13 | 显示全部楼层
GoStop 发表于 2013-3-8 00:29
怎么找库文件啊,能一步步的给我说说吗?谢谢了

*\arduino-1.0.3\libraries

库的地址:
顺便贴下我不知道哪里找来的

可以用


const int TrigPin = 2;
const int EchoPin = 3;
const int Tri = 4;
const int Ech = 5;
float cm1;
float cm2;
void setup()
{
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
pinMode(Tri, OUTPUT);
pinMode(Ech, INPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
}

void loop()
{
  int i;
   for(i=1;i<=2;i++)
{
   digitalWrite(7, LOW);
   digitalWrite(8, LOW);
   if(i=1)
   {
     digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin
    delayMicroseconds(2);
    digitalWrite(TrigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(TrigPin, LOW);
   
     cm1 = pulseIn(EchoPin, HIGH) / 58.0; //将回波时间换算成cm
    cm1 = (int(cm1 * 100.0)) / 100.0; //保留两位小数
    Serial.print(cm1);
    Serial.print("cm1");
    Serial.println();
    delay(10);
   
     if(cm1<5)
     {
       digitalWrite(7, HIGH);
     }
  }
delay(50);
   if(i=2)
   {
     digitalWrite(Tri, LOW); //低高低电平发一个短时间脉冲去Tri
    delayMicroseconds(2);
    digitalWrite(Tri, HIGH);
    delayMicroseconds(10);
    digitalWrite(Tri, LOW);
   
     cm2 = pulseIn(Ech, HIGH) / 58.0; //将回波时间换算成cm
    cm2 = (int(cm2* 100.0)) / 100.0; //保留两位小数
    Serial.print(cm2);
    Serial.print("cm2");
    Serial.println();
    delay(10);
  
     if(cm2<5)
     {
       digitalWrite(8, HIGH);
    }
   }
}
}
回复 支持 反对

使用道具 举报

发表于 2013-6-3 11:20:32 | 显示全部楼层
怎么加无源蜂鸣器,新手不懂,求大神指教
回复 支持 反对

使用道具 举报

发表于 2014-4-19 20:19:49 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2014-11-22 21:54:31 | 显示全部楼层
请问,您这个有没有安装过程,我是个新手,所以不太懂,求帮助,谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 23:01 , Processed in 0.042905 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表