URM37_V3_2_PWM.pde:

/*
Name: Arduino UNO 单片机 URM37 V3.2 超声波测距模块演示代码
Mode: PWM 脉冲 脉宽输出
By: Nuclear'Atk
Url: https://lcx.cc/post/1691/
Time: 2011年6月17日, 19:46:29
*/

int inputPin = 10;  //定义超声波信号接收接口
int outputPin = 7; //定义超声波信号发送接口

void setup()
{
  Serial.begin(9600);
  pinMode(inputPin, INPUT);
  pinMode(outputPin, OUTPUT);
}

void loop()
{
  digitalWrite(outputPin, LOW); //使超声波信号发送接口低电平2μs
  delayMicroseconds(2);
  digitalWrite(outputPin, HIGH); //使超声波信号发送接口高电平10μs
  delayMicroseconds(10);
 
  float distance = pulseIn(inputPin,LOW);  //读低脉冲时间
  distance = distance/50;   //将脉冲时间转化为距离(单位:厘米,超声波模块PWM输出规定50us为1cm。详情请参阅URM37V3.2超声波传感器的使用手册。)
  Serial.print("Distance: ");Serial.print(distance);Serial.println(" cm");  //输出距离值
  delay(100); //100ms
}

URM37_V3_2_TTL.pde:

/*
Name: Arduino UNO 单片机 URM37 V3.2 超声波测距模块演示代码
Mode: TTL 电平 串口
By: Nuclear'Atk
Url: https://lcx.cc/post/1691/
Time: 2011年6月17日, 19:46:29
*/

int distance = 0; //距离变量
boolean flag = true; //循环判断
uint8_t DMcmd[4] = {0x22, 0x00, 0x00, 0x22}; //距离命令

void setup() {
  Serial.begin(9600);
}

void loop() {
  flag = true;
  for(int i=0;i<4;i++)
  {
    Serial.print(DMcmd[i],BYTE); //发送超声波测距命令
  }
  delay(100);
  while(flag)
  {
    if(Serial.available() > 0) //查询串口有无数据
      {
          int header=Serial.read(); //0x22开始接收距离数据
          int highbyte=Serial.read(); //距离数据高8位
          int lowbyte=Serial.read(); //距离数据低8位
          int sum=Serial.read(); //sum校验和
        
          if(highbyte == 255) distance = 65525; //数据无效
          distance = highbyte * 255 + lowbyte; //计算结果
          if (distance < 0) distance = 0; //处理负数
          Serial.flush(); //清空缓冲器
          Serial.print("Distance: "); Serial.print(distance); Serial.println(" cm");  //输出距离值
          flag = false;
       }
    delay(100);
  }
}