- /*
- 【Arduino】66种传感器模块系列实验(58)
- 实验五十八: HC-SR04超声波测距传感器模块(通用款)
- 程序之三,串口输出等待时间的原始数据
- Echo接Digital 3口,接收距离信号
- Trig接Arduino板的Digital 2口,触发测距
- 上电后预热稳定大约需要60秒钟
- HC-SR04为简单通用款,没有温度补偿,实测200CM段误差约3CM
- */
- #define Trig 2
- #define Echo 3
-
- float cm; //距离变量
- float temp;
-
- void setup() {
- Serial.begin(9600);
- pinMode(Trig, OUTPUT);
- pinMode(Echo, INPUT);
- }
-
- void loop() {
- //给Trig发送一个低高低的短时间脉冲,触发测距
- digitalWrite(Trig, LOW); //给Trig发送一个低电平
- delayMicroseconds(2); //等待 2微妙
- digitalWrite(Trig,HIGH); //给Trig发送一个高电平
- delayMicroseconds(10); //等待 10微妙
- digitalWrite(Trig, LOW); //给Trig发送一个低电平
-
- temp = float(pulseIn(Echo, HIGH)); //存储回波等待时间,
- //pulseIn函数会等待引脚变为HIGH,开始计算时间,再等待变为LOW并停止计时
- //返回脉冲的长度
-
- //声速是:340m/1s 换算成 34000cm / 1000000μs => 34 / 1000
- //因为发送到接收,实际是相同距离走了2回,所以要除以2
- //距离(厘米) = (回波时间 * (34 / 1000)) / 2
- //简化后的计算公式为 (回波时间 * 17)/ 1000
-
- cm = (temp * 17 )/1000; //把回波时间换算成cm
-
- Serial.print("Echo =");
- Serial.print(temp);//串口输出等待时间的原始数据
- Serial.print(" | | Distance = ");
- Serial.print(cm);//串口输出距离换算成cm的结果
- Serial.println("cm");
- delay(500);
- }
复制代码
|