pluseIn(pin,value)

const short trigPin[4]; //定义一个数组,表示4个发出超声波的引脚const short echoPin[4]; //定义一个数组,表示4个接收超声波的引脚float d(short trp, short ecp) { //函数d,两个参数是引脚的名称。在后面用数组依次初始化。 digitalWrite(trp, LOW); //trigPin引脚 低高低发出超声波 delayMicroseconds(2); digitalWrite(trp, HIGH); delayMicroseconds(10); digitalWrite(trp, LOW); return (pulseIn(ecp, HIGH) / 58.0); //返回值是echoPin的距离 //pulseIn()返回值是时间,/58.0之后就是距离单位是cm。}/// <summary>/// 超声波测距初始化/// </summary>void HighWave_Init() { //highwave_init表示超声波初始化函数。 for (short i = 0; i < 4; i++) //依次设置引脚为输出和输入,顺便把trigPin引脚设置为LOW { pinMode(trigPin[i], OUTPUT); pinMode(echoPin[i], INPUT); digitalWrite(trigPin[i], LOW); }}/// <summary>/// 获取超声波测距数据/// </summary>/// <param name="val">数据存储数组</param>void GetLength_HighWave(float value[]) { //其他位置声明value数组,调用value数组储存着最后的距离值。//而且返回值是void,因为调用数组/指针,不需要返回值。 for (short i = 0; i < 4; i++) value[i] = d(trigPin[i], echoPin[i]); //依次调用d()函数测距离。}
串口监视器
float value[4]={0};const short trigPin[4] = {22, 24, 26, 28};const short echoPin[4] = {23, 25, 27, 29};float d(short trp, short ecp) { digitalWrite(trp, LOW); delayMicroseconds(2); digitalWrite(trp, HIGH); delayMicroseconds(10); digitalWrite(trp, LOW); return (pulseIn(ecp, HIGH) / 58.0);}/// <summary>/// 超声波测距初始化/// </summary>void HighWave_Init() { for (short i = 0; i < 4; i++) { pinMode(trigPin[i], OUTPUT); pinMode(echoPin[i], INPUT); digitalWrite(trigPin[i], LOW); }}/// <summary>/// 获取超声波测距数据/// </summary>/// <param name="val">数据存储数组</param>void GetLength_HighWave(float value[]) { for (short i = 0; i < 4; i++) value[i] = d(trigPin[i], echoPin[i]);}void setup() { Serial.begin(9600); HighWave_Init();}void loop() { Serial.print("Distance:"); GetLength_HighWave(value); Serial.println(value[0]); Serial.println(value[1]); Serial.println(value[2]); Serial.println(value[3]); Serial.print("cm"); Serial.println(); }