关于Arduino数字超声波接法与应用

时隔多日,我又来更新文章了。在大致系统地学习完Arduino后,终于腾出时间来。这一次是简单介绍超声波工作原理和示例代码。


此次超声波为SRF-04超声波传感器。该超声波有四个端口,电源端、接地端、触发端和反馈端。超声波,最直接最常见的作用是拿来测距。其原理是触发端(trige)发射超声波,反馈端(echo)接收反射回来的超声波,利用中间的时间差用公式算出得到距离。单位cm。用超声波作的扩展作用一般是设在小车前端测距,对距离设定范围判断是否遇到障碍物。


关于Arduino数字超声波接法与应用_第1张图片
SRF-04超声波传感器

由此我们知道,一般超声波反馈端得到的数据写入另外的数字端,连接我们需要的元件,常见的是小车轮子上的直流电机。

关于Arduino数字超声波接法与应用_第2张图片
超声波接法


超声波传感器和直流电机代码


const int TrigPin = 2; //超声波触发端口

const int EchoPin = 3;//超声波的反馈端口

float cm;

void setup()

{


Serial.begin(9600); //波特率

pinMode(TrigPin, OUTPUT); //超声波的触发端口为输出

pinMode(EchoPin, INPUT); //超声波的反馈端口为输出

}

void loop()

{

digitalWrite(TrigPin, LOW);

delayMicroseconds(2);

digitalWrite(TrigPin, HIGH);

delayMicroseconds(10);

digitalWrite(TrigPin, LOW);

cm = pulseIn(EchoPin, HIGH) / 58.0; //将回波时间换算成cm

cm = (int(cm * 100.0)) / 100.0;

pinMode(4, OUTPUT);

if (cm > 5)//如果cm大于厘米

  {digitalWrite(4, HIGH);

  }

 else//否则

   {digitalWrite(4, LOW);

   }

  }

其中加粗的部分代码是超声波测距的程序,在利用超声波时可直接使用。




当然,该程序不能在串口监视器查看,想要加入串口监视,则要修改一下程序。

const int TrigPin = 2;
const int EchoPin = 3;
float distance;
void setup()
{   // 初始化串口通信及连接SR04的引脚
       Serial.begin(9600);
       pinMode(TrigPin, OUTPUT);
   // 要检测引脚上输入的脉冲宽度,需要先设置为输入状态
       pinMode(EchoPin, INPUT);
   Serial.println("Ultrasonic sensor:");
}
void loop()
{
   // 产生一个10us的高脉冲去触发TrigPin
       digitalWrite(TrigPin, LOW);
       delayMicroseconds(2);
       digitalWrite(TrigPin, HIGH);
       delayMicroseconds(10);
       digitalWrite(TrigPin, LOW);
   // 检测脉冲宽度,并计算出距离
       distance = pulseIn(EchoPin, HIGH) / 58.00;
       Serial.print(distance);
       Serial.print("cm");
       Serial.println();

       delay(1000);
}


关于Arduino数字超声波接法与应用_第3张图片
串口监视器


以上是对超声波的简单介绍,实际具体情况编写的代码也会不同。

你可能感兴趣的:(关于Arduino数字超声波接法与应用)