我有一个TowerPro MG90D伺服器(制造商链接)(ServoDatabase Link)。
它具有180度范围(非连续)。  
在测试仪上观察以下7%的占空比(大约90度):
伺服响应良好。
但是,当我servo.write()与Arduino Mega 2560克隆一起使用时,伺服器不会响应任何角度输出。我还有其他几个伺服器,它们在相同的引脚上使用相同的代码也可以正常工作。
使用以下命令在Arduino上观察以下7%的占空比servo.write(90):  
没有反应。伺服是“一跳”;它没有担任任何职务。
在写这个问题时,我想到了尝试servo.writeMicroseconds()。
这里是servo.writeMicroseconds(1450):
伺服响应!
这是servo.writeMicroseconds(1472)(工作中),其时间间隔与prevoius非工作中相同servo.write(90)!
servo.writeMicroseconds(1550) (工作中):
有什么区别?
伺服测试仪的工作频率servo.write()为49.5Hz ,而失败的频率为49.9Hz。我想知道0.4Hz是否会有所不同,但是后来我看到它servo.writeMicroseconds()也以49.9Hz起作用。
在上面的范围捕获中,可以看出两者servo.write(90)和servo.writeMicroseconds(1472)具有相同的时间间隔:
 1,474,560ns HIGH
18,544,640ns LOW
信号是如此相似... 是什么原因导致servo.write()无法工作?
我的代码是尽可能基本的:
#include <Servo.h>
Servo serv1;
void setup() {
  serv1.attach(3); // Pin 3
}
void loop() {
  serv1.write(90); // No response
  delay(3000);
  serv1.writeMicroseconds(1472); // Works
  delay(3000);
  serv1.write(0); // No response
  delay(3000);
  serv1.writeMicroseconds(1800); // Works
  delay(3000);
}

模拟此电路 –使用CircuitLab创建的原理图
write吗?确实没有理由使伺服器不工作,所以我会质疑您的信号。
                







