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);
}
这篇文章很棒,您可以在其中找到所有信息:
希望这个答案。祝一切顺利
我很困惑为什么结果总是零
我确定我正确放置了传感器引脚。
我也用过 #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);
}
这篇文章很棒,您可以在其中找到所有信息:
希望这个答案。祝一切顺利