学习笔记28-用arduino控制超声波测试距离显示在LCD上
进入这论坛不是很久,自己也是一名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等引脚),你只要把看到的引脚按照下面的原理图进行连接就可以了。
2009
这是它的接线图。用的是Arduino LCD1602 字符液晶 输入输出扩展板 LCD Keypad Shield 。超声波是网上卖的一个十六块钱的普通超声波模块。
代码:#include <LCD4Bit_mod.h>
LCD4Bit_mod lcd = LCD4Bit_mod(2);
int inputPin=15;
int outputPin=16;
int ledPin = 17;
void setup() {
pinMode(inputPin, INPUT);
pinMode(outputPin, OUTPUT);
pinMode(ledPin,OUTPUT);
lcd.init();
lcd.clear();
lcd.cursorTo(1, 0);
lcd.printIn("Hello,World!");
}
void display(int number,unsigned char address)
{
unsigned char a,b,c,d;
if(number <100)
digitalWrite(ledPin,LOW);
if(number >=100 )
digitalWrite(ledPin,HIGH);
a=(number/1000);
b=(number/100)%10;
c=(number/10)%10;
d=number%10;
lcd.commandWrite(0x80+address);
lcd.print(a+48);
lcd.print(b+48);
lcd.print(c+48);
lcd.print(46);
lcd.print(d+48);
lcd.print(99);
lcd.print(109);
}
void loop() {
digitalWrite(outputPin, LOW);
delayMicroseconds(2);
digitalWrite(outputPin, HIGH);
delayMicroseconds(10);
digitalWrite(outputPin, LOW);
float distance = pulseIn(inputPin, HIGH);
distance= distance/5.8;
lcd.cursorTo(2, 0);
lcd.printIn("Distance:");
display(distance,0x49);
}下面是一个我朋友做传在优酷上的视频效果:
http://player.youku.com/player.php/sid/XMjY4MDQxMTky/v.swf
哥们儿,为什么我每次弄的时候,每次都有错误呢?你的编程是不是哪出问题了? GoStop 发表于 2012-2-28 20:46 static/image/common/back.gif
哥们儿,为什么我每次弄的时候,每次都有错误呢?你的编程是不是哪出问题了?
可能是你的库没有正确吧,可以查一查四位数据发送的库,官方上有:) プ汏坏疍 发表于 2012-4-7 10:09 static/image/common/back.gif
可能是你的库没有正确吧,可以查一查四位数据发送的库,官方上有
怎么找库文件啊,能一步步的给我说说吗?谢谢了 GoStop 发表于 2013-3-8 00:29 static/image/common/back.gif
怎么找库文件啊,能一步步的给我说说吗?谢谢了
*\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);
}
}
}
} 怎么加无源蜂鸣器,新手不懂,求大神指教 :L:L:L:L:L:L:L 请问,您这个有没有安装过程,我是个新手,所以不太懂,求帮助,谢谢:)
页:
[1]