pluseIn(pin,value)
image.png

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

串口监视器

  1. float value[4]={0};
  2. const short trigPin[4] = {22, 24, 26, 28};
  3. const short echoPin[4] = {23, 25, 27, 29};
  4. float d(short trp, short ecp) {
  5. digitalWrite(trp, LOW);
  6. delayMicroseconds(2);
  7. digitalWrite(trp, HIGH);
  8. delayMicroseconds(10);
  9. digitalWrite(trp, LOW);
  10. return (pulseIn(ecp, HIGH) / 58.0);
  11. }
  12. /// <summary>
  13. /// 超声波测距初始化
  14. /// </summary>
  15. void HighWave_Init() {
  16. for (short i = 0; i < 4; i++)
  17. {
  18. pinMode(trigPin[i], OUTPUT);
  19. pinMode(echoPin[i], INPUT);
  20. digitalWrite(trigPin[i], LOW);
  21. }
  22. }
  23. /// <summary>
  24. /// 获取超声波测距数据
  25. /// </summary>
  26. /// <param name="val">数据存储数组</param>
  27. void GetLength_HighWave(float value[]) {
  28. for (short i = 0; i < 4; i++)
  29. value[i] = d(trigPin[i], echoPin[i]);
  30. }
  31. void setup() {
  32. Serial.begin(9600);
  33. HighWave_Init();
  34. }
  35. void loop() {
  36. Serial.print("Distance:");
  37. GetLength_HighWave(value);
  38. Serial.println(value[0]);
  39. Serial.println(value[1]);
  40. Serial.println(value[2]);
  41. Serial.println(value[3]);
  42. Serial.print("cm");
  43. Serial.println();
  44. }