进入这论坛不是很久,自己也是一名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 。超声波是网上卖的一个十六块钱的普通超声波模块。
代码:- #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);
- }
复制代码 下面是一个我朋友做传在优酷上的视频效果:
|