[英]Arduino UNO + Ethernet Shield + Ultrasonic Sensor = Fail
使用我的 Arduino Uno,我使用 HC-SR04 超声波传感器测量距离,使用下面的接线完全没有问题。 当我连接以太网屏蔽时,我的超声波传感器不再测量距离,无论如何它总是显示 0cm。 我尝试了不同的数字引脚对,例如 5-7、6-8、5-9、3-5、2-8,但没有成功。
我怀疑 HC-SR04 与我的以太网屏蔽不兼容,但我在网上的任何地方都没有看到这样的警告。
这是我拥有的以太网屏蔽; http://www.ezshopfun.com/product_info.php?products_id=169
这是我的实际电路;
这是我的代码;
#define trigPin 6
#define echoPin 7
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
int duration, distance;
digitalWrite(trigPin, HIGH);
delayMicroseconds(1000);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH) / 2;
distance = duration / 29.1;
Serial.print(distance);
Serial.println(" cm");
delay(500);
}
今天我买了一个万用表并测试了我的电路。 这是结果;
当我的电路直接连接到 Arduino 本身时;
4.80V & 5.7mA
当我的电路连接到以太网屏蔽时;
3.06V & 3.8mA
我认为问题是 3.06V 不足以让我的 HC-SR04 运行。
是的,基于这张照片
您没有将传感器接地。 你有两个电源进入它。 不用说,出于多种原因,这很糟糕。 首先也是最重要的,因为它不会在不接地的情况下工作,哈哈
正如其他人所说,看起来主要问题是您需要将其连接到 5V 并通常检查您的接线。
然而,还有一个潜在的问题:
digitalWrite(trigPin, HIGH);
delayMicroseconds(1000);
digitalWrite(trigPin, LOW);
您只需将触发引脚设置为高电平 10 微秒,而不是 1000 微秒。 我不知道这是否是一个问题,但没有必要等待这么长时间。 等待那么长时间,您可能会错过部分或全部传入脉冲。
您可能还想查看一些 HC-SR04 教程,例如:
http://superawesomerobots.com/tutorials/hc-sr04-tutorial-for-arduino/
希望有帮助。
我在 wifi 屏蔽 + 超声波传感器上遇到了类似的问题。 我发现从引脚 13(trig) 和 11(echo) 切换到 8(trig) 和 3(echo) 修复了它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.