700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Arduino-超声波测距模块

Arduino-超声波测距模块

时间:2019-08-06 18:22:36

相关推荐

Arduino-超声波测距模块

关于Arduino超声波的接法与应用

简单介绍超声波测距模块

SR04超声波传感器:

是利用超声波特性检测距离的传感器,其带有两个超声波探头,分别用作于发射和接收超声波。范围在3-450cm。

工作原理:

超声波发射器向某一方向发射超声波,在发射的同时开始计时;

超声波在空气中传播,途中遇到障碍物则立即返回,超声波接收器收到反射波则立即停止计时。

声波在空气中传播速度为340m/s,根据计时器记录时间t,即可算出发射点距离障碍物的距离S,

即S=340m/s*t/2,这就是所谓的时间差测距法。

代码:

int trigPin = 8;//发出信号int echoPin = 7;//接收信号float v = 331.5+0.6*20;// 若不考虑温度的影响,声波在空气中传播速度为340m/svoid setup() {Serial.begin(115200);//设置波特率pinMode(trigPin,OUTPUT);//设置输出状态。或者写成:pinMode(8,OUTPUT);pinMode(echoPin,INPUT);//设置输入状态pinMode(6,OUTPUT);//蜂鸣器pin6,输出状态}float distanceM(){digitalWrite(trigPin,LOW);//delayMicroseconds(3);//延时3微秒digitalWrite(trigPin,HIGH);delayMicroseconds(5);digitalWrite(trigPin,LOW);/*float tUS = pulseIn(echoPin,HIGH);float t = tUs / 1000.0 / 1000.0 / 2;float d = t*v;return d*100;*/float d =pulseIn(echoPin,HIGH)/58.00; //检测脉冲宽度,并计算出距离**cm. /*pulseIn()单位为微秒,声速340m/s,单片机的晶振频率约为14MHZ,所以距离cm=340*100/(1000000-14000)*pulseIn()/2,及化简为pulseIn()/[(1000000-14000)*2/(340*100)]等于pulseIn()/58.0.*/return d;}void loop(){while(1){int d = distanceM();Serial.println(d,DEC);//BIN、OCT、HEX、DEC分别代表二、八、十六、十进制~~if(d>10){digitalWrite(6,HIGH);//蜂鸣器delay(200);digitalWrite(6,LOW);}delay(200);}}

米思齐:

(.04.14更新)

全国青少年机器人技术等级考试实操考题:

主题:超声波测距

器件:LED灯模块3个,超声波传感器1个,结构件若干(也可以使用普通电子元件结构面包板搭建)

搭建要求:

1、本项目由LED灯,超声波传感器组成;

2、当障碍物距离超声波传感器大于30厘米时,3盏LED灯均处于熄灭状态;

3、当障碍物逐渐接近超声波传感器时,随着距离的减小,3盏LED灯依次点亮(触发距离值由考生自行决定);

4、当障碍物逐渐远离超声波传感器时,3盏LED灯依次熄灭;

5、将超声波传感器返回的当前距离值,显示在串口监视器上。

电路原理图:

示例代码1:

volatile int Tpin;volatile int Epin;volatile int dISTANCE;float checkdistance_Tpin_Epin() {digitalWrite(Tpin, LOW);delayMicroseconds(2);digitalWrite(Tpin, HIGH);delayMicroseconds(10);digitalWrite(Tpin, LOW);float distance = pulseIn(Epin, HIGH) / 58.00;delay(10);return distance;}void setup(){Tpin = 3;Epin = 2;dISTANCE = 0;pinMode(Tpin, OUTPUT);pinMode(Epin, INPUT);Serial.begin(9600);}void loop(){dISTANCE = checkdistance_Tpin_Epin();Serial.print(dISTANCE);Serial.println("CM");}

示例代码2:

volatile int Tpin;volatile int Epin;volatile int R;volatile int G;volatile int B;volatile int dISTANCE;float checkdistance_Tpin_Epin() {digitalWrite(Tpin, LOW);delayMicroseconds(2);digitalWrite(Tpin, HIGH);delayMicroseconds(10);digitalWrite(Tpin, LOW);float distance = pulseIn(Epin, HIGH) / 58.00;delay(10);return distance;}void setup(){Tpin = 3;Epin = 2;R = 7;G = 8;B = 9;dISTANCE = 0;pinMode(Tpin, OUTPUT);pinMode(Epin, INPUT);Serial.begin(9600);}void loop(){dISTANCE = checkdistance_Tpin_Epin();Serial.print(dISTANCE);Serial.println("CM");delay(10);if (dISTANCE < 30) {pinMode(R, OUTPUT);digitalWrite(R,HIGH);delay(1000);pinMode(G, OUTPUT);digitalWrite(G,HIGH);delay(1000);pinMode(B, OUTPUT);digitalWrite(B,HIGH);}if (dISTANCE > 30) {pinMode(R, OUTPUT);digitalWrite(R,LOW);delay(1000);pinMode(G, OUTPUT);digitalWrite(G,LOW);delay(1000);pinMode(B, OUTPUT);digitalWrite(B,LOW);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。