Arduino HC-SR04 pwm干扰

Arduino HC-SR04 pwm干扰,arduino,pwm,arduino-ultra-sonic,Arduino,Pwm,Arduino Ultra Sonic,我一直在努力与arduino和超声波传感器HC-SR04和PWM。 我正在使用arduino pro mini。也使用NewPing库 newping library的例子非常有效,如果我只连接了声纳,当我向上指向天花板时,声纳大约有170厘米 然而,如果我在另一个引脚(本例中为引脚3)上添加一个pwm调用,声纳输出的最大值为41厘米,下面的一切都可以工作,尽管有点嘈杂 我几乎没有连接到pwm引脚,只有一个电容器和一个电阻器。我也有一个马达,但为了调试把它拆了 我的接线图: 代码: #包括 #定

我一直在努力与arduino和超声波传感器HC-SR04和PWM。 我正在使用arduino pro mini。也使用NewPing库

newping library的例子非常有效,如果我只连接了声纳,当我向上指向天花板时,声纳大约有170厘米

然而,如果我在另一个引脚(本例中为引脚3)上添加一个pwm调用,声纳输出的最大值为41厘米,下面的一切都可以工作,尽管有点嘈杂

我几乎没有连接到pwm引脚,只有一个电容器和一个电阻器。我也有一个马达,但为了调试把它拆了

我的接线图:

代码:

#包括
#定义触发器引脚8//Arduino引脚与超声波传感器上的触发器引脚相连。
#定义ECHO_引脚7//Arduino引脚与超声波传感器上的ECHO引脚相连。
#定义最大距离200
新平声纳(触发针、回波针、最大距离);
int p=3;
无效设置(){
//将安装代码放在此处,以便运行一次:
pinMode(p,输出);
序列号开始(115200);
}
void循环(){
延迟(50);//在两次ping之间等待50ms(大约20次ping/秒)。29ms应该是两次ping之间最短的延迟。
序列号。打印(“Ping:”);
int d=声纳。ping_cm();
Serial.print(d);//发送ping,以厘米为单位获取距离并打印结果(0=超出设置的距离范围)
序列号。打印号(“cm”);
类比法(p,d);
}
如果我从引脚3上拆下所有的东西,问题就消失了,但我不知道这条线路会有什么影响,尤其是在电机丢失的情况下


您知道如何让声纳和pwm同时工作吗。

检查HC-SR04的引脚颜色。带有“黄铜”色针脚的型号有缺陷。他们可能会返回错误的读数。带有“银色y-ish”管脚的型号更精确。缺陷不存在


此外,尝试将针脚2和针脚3用于距离传感器,并将其他针脚用于PWM。

此外,通电后,第一个读数似乎正确,其余读数则错误,显示41
#include <NewPing.h>

#define TRIGGER_PIN  8  // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN     7  // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
int p = 3;
void setup() {
  // put your setup code here, to run once:
  pinMode(p,OUTPUT);
  Serial.begin(115200);
}

void loop() {
  delay(50);                     // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
  Serial.print("Ping: ");
  int d = sonar.ping_cm();
  Serial.print(d); // Send ping, get distance in cm and print result (0 = outside set distance range)
  Serial.println("cm");
  analogWrite(p,d);
  
}