零知智能避障小车系列2 - 超声波模块使用 HC SR04

超声波测量距离简单实用,本次使用HC SR04超声模块进行讲解,之后把这个模块应用到小车上,进行避障功能应用。模块的实物如下:

一、材料

超声避障模块-HC SR04
零知标准板
杜邦线若干

二、连线:

接线比较简单,按照如下顺序连线即可:

三、代码

我们根据模块的原理来进行代码编写,超声测距时的操作时序如下:

编写代码如下,即可测出距离:


							
   /**
   *    文件: 超声测距.ino      by 零知实验室([url=http://www.lingzhilab.com]www.lingzhilab.com[/url])
   *    -^^- 零知开源,让电子制作变得更简单! -^^-
   *    时间: 2018/10/13 15:29
   *    说明: 
   **/
    
    
   #define SR04_TRIG        9
   #define SR04_ECHO        10
    
   // the setup routine runs once when you press reset:
   void setup() {
       // put your setup code here, to run once:
            
           pinMode(SR04_TRIG, OUTPUT);
           pinMode(SR04_ECHO, INPUT);
            
           Serial.begin(9600);
   }
    
   // the loop routine runs over and over again forever:
   void loop() {
       // put your main code here, to run repeatedly:
            
           int distance = getDistance();
            
           Serial.print("distance = ");
           Serial.println(distance);
            
           delay(300);
   }
						
						

其中getDistance函数实现如下:


															
	//超声测距
	
	int getDistance()
	
	
	
	{
	
	
	
	        digitalWrite(SR04_TRIG, LOW);
	
	
	
	        delayMicroseconds(2);
	
	
	
	        digitalWrite(SR04_TRIG, HIGH);
	
	
	
	        delayMicroseconds(10);
	
	
	
	        digitalWrite(SR04_TRIG, LOW);
	
	
	
	        int distance = pulseIn(SR04_ECHO, HIGH);
	
	
	
	        distance = distance/58.0;
	
	
	
	        return distance;
	
	
	
	}
						
						

我们把程序上传到零知标准板后,可以测得如下所示距离数据,单位cm:

完整工程


超声测距.7z(点击下载)