Us-100 超声波传感器:零结果

Us-100 ultrasonic sensor: zero result

我很困惑为什么结果总是零 我确定我正确放置了传感器引脚。 我也用过 #include <SoftwareSerial.h>,但也没用。

所以我担心我的传感器坏了。

有人对我的问题有解决方案或想法吗? Us-100 超声波传感器[在此处输入图片描述][1]

const int pingPin = 5; // Trigger Pin of Ultrasonic Sensor
const int echoPin = 6; // Echo Pin of Ultrasonic Sensor

long duration;

void setup() {
  pinMode(pingPin, OUTPUT);
  pinMode(echoPin, INPUT);
  digitalWrite(pingPin, LOW);
  Serial.begin(9600);
}

void loop() {
  digitalWrite(pingPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(pingPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  Serial.print(duration / 29 / 2);
  Serial.println(" cm");
  delay(300);
}

I tried again using serial with pins 12 and 13. it worked. Thank you to all of you.

#include <SoftwareSerial.h>
const int pin_TX = 12; 
const int pin_RX = 13; 
SoftwareSerial mySerial(pin_RX, pin_TX);
unsigned int HighByte = 0;
unsigned int LowByte  = 0;
unsigned int Len  = 0;

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

void loop() {
  mySerial.flush();
  mySerial.write(0X55);                           // trig US-100 begin to measure the distance
  delay(500);                                  
  if (mySerial.available() >= 2)                  // check receive 2 bytes correctly
  {
    HighByte = mySerial.read();
    LowByte  = mySerial.read();
    Len  = HighByte * 256 + LowByte;          // Calculate the distance
    if ((Len > 1) && (Len < 10000))
    {
      Serial.print("Distance: ");
      Serial.print(Len, DEC);          
      Serial.println("mm");                  
    }
  }
  delay(1000);                                    
} 

我宁愿使用不同的软件方法,通过 TX-RX 引脚实现串行通信,而不是发送和测量脉冲。此方法还将检查您的设备是否正常工作。

请按如下方式重新连接您的设备:

Module Connection   Arduino Connection
VCC                 5v
GND                 GND
Trig                TX (Pin 1)
Echo                RX (Pin 0)

代码:

// RX (Pin 0 of Arduino digital IO) to Echo
// TX (Pin 1 of Arduino digital IO) to Trig 
unsigned int HighLen = 0;
unsigned int LowLen  = 0;
unsigned int Len_mm  = 0;

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

void loop() 
{
    Serial.flush();                               
    Serial.write(0X55);                           // trig US-100 begin to measure the distance
    delay(500);                                   
    if(Serial.available() >= 2)                   // receive 2 bytes 
    {
        HighLen = Serial.read();                   // High byte of distance
        LowLen  = Serial.read();                   // Low byte of distance
        Len_mm  = HighLen*256 + LowLen;            // Calculate the distance
        if((Len_mm > 1) && (Len_mm < 10000))       // normal distance should between 1mm and 10000mm (1mm, 10m)
        {
            Serial.print("Present Length is: ");   
            Serial.print(Len_mm, DEC);             
            Serial.println("mm");                  
        }
    }
    delay(500);                                   
}

这篇文章很棒,您可以在其中找到所有信息:

http://arduinolearning.com/amp/code/arduino-and-us-100-ultrasonic-ranging-module-serial-data-mode-example.php

希望这个答案。祝一切顺利