arduino超声波传感器


/** 超声波雷达引脚 **/
#define ULTRASONIC_IN_PIN          6  // 超声波接收脚 Echo
#define ULTRASONIC_OUT_PIN         7  // 超声波发射脚 T

//距离
float distance = 0;//数据类型 float浮点型 int整型   全局变量

void setup() {
    Serial.begin(9600);//串口通讯函数 9600波特率
    pinMode(ULTRASONIC_IN_PIN, INPUT); //定义传感器接收端的引脚模式
    pinMode(ULTRASONIC_OUT_PIN, OUTPUT); //定义传感器发射端的引脚模式
    Serial.println("-------------- setup ok -----------------");//串口通讯打印数据 print(不换行)println(打印并换行)
}

void loop() {
    digitalWrite(ULTRASONIC_OUT_PIN, LOW); //LOW/HIGH  0/1
    delayMicroseconds(2);
    digitalWrite(ULTRASONIC_OUT_PIN, HIGH); //超声波发送一个不小于10us的高脉冲
    delayMicroseconds(10);
    digitalWrite(ULTRASONIC_OUT_PIN, LOW);
    float Fdistance = pulseIn(ULTRASONIC_IN_PIN, HIGH); // 读取返回脉冲宽度(即高电平持续的时间长短),单位为ms
    //distance = Fdistance / 3.4 / 10; // 时间转成距离 (单位:公分) 理论值340米/每秒,实际测试中并不准确
    distance = Fdistance / 5.8 / 10; // 时间转成距离 (单位:公分)
    Serial.print("检测结果:");
    Serial.print(distance);//打印距离
    Serial.println("cm");
    delay(2000);//单位毫秒
}