我不明白多个PWM输出应该如何工作。看看这张照片。
在第一种情况下,我们使用短信号宽度,这将接近电机保持静止状态。在这种情况下,可以看出,短脉冲相互跟随,代码也是如此。
motor1.writeMicroseconds(shortWidth);
motor2.writeMicroseconds(shortWidth);
motor3.writeMicroseconds(shortWidth);
motor4.writeMicroseconds(shortWidth);
当motor4结束输出时,motor1再次启动脉冲,导致无故障的脉冲。
在第二个(2)情况下,脉冲较宽,这对应于将电动机速度设置为接近最大值。在motor1完成生成宽度后,是motor2生成一个宽度的时间。但是当它发生时,motor1的周期结束并且它必须再次开始产生宽度,但是arduino正在忙着产生motor2的脉冲。
在这种情况下,PWM如何工作?
答案 0 :(得分:1)
您可能希望直接查看Servo.h
和Servo.cpp
的代码。但有两件事可以帮助理解:
您可以尝试以下代码:
#include <Servo.h>
Servo myServo1;
Servo myServo2;
const int servo1Pin = 9;
const int servo2Pin = 10;
void setup(){
// attach servo to pin
myServo1.attach(servo1Pin);
myServo2.attach(servo2Pin);
}
void loop(){
myServo1.write(15); //set servo to 15°
myServo2.write(45); //set servo to 45°
delay(1000); //wait 1 second
myServo1.write(90); //set servo to 90°
myServo2.write(90); //set servo to 90°
delay(1000); //wait 1 second
myServo1.write(165); //set servo to 165°
myServo2.write(135); //set servo to 135°
delay(1000); //wait 1 second
}