我在编写四驱麦轮的时候,看到一位up的pwm代码,用了2个定时器,8个引脚输出pwm,请问是为什么?
按照我的理解是四个带编码器的电机,仅需4个引脚就可以输出pwm,也就是一个定时器即可,为什么还用另一个?

我在编写四驱麦轮的时候,看到一位up的pwm代码,用了2个定时器,8个引脚输出pwm,请问是为什么?
按照我的理解是四个带编码器的电机,仅需4个引脚就可以输出pwm,也就是一个定时器即可,为什么还用另一个?

关注让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言可能是出于以下几个原因:
#include <Servo.h>
Servo motor1;
Servo motor2;
void setup() {
// 设置定时器1,控制电机1
TCCR1A = _BV(COM1A1) | _BV(WGM11); // WGM11为PWM选择模式中的第4位,使得定时器1正向计数至OCR1A时,引脚13的电平发生变化
TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS11); // 设置PWM选择模式为14,用ICR1作为计数器,设置预分频系数为8
ICR1 = 4999; // 设置频率为20kHz,4999为计数器上限
// 设置定时器2,控制电机2
TCCR2A = _BV(COM2A1) | _BV(WGM21) | _BV(WGM20); // WGM21和WGM20为PWM选择模式中的第2,1位,使得定时器2正向计数至OCR2A时,引脚11的电平发生变化
TCCR2B = _BV(CS22); // 设置预分频系数为64
OCR2A = 124; // 设置频率为62500Hz,对应控制的电机2
motor1.attach(13);
motor2.attach(11);
}
void loop() {
// 控制电机1
motor1.write(90); // 设置电机1占空比为50%
// 控制电机2
analogWrite(3,127); // 设置电机2占空比为50%
}
在此代码中,我们使用了两个定时器分别控制两个电机的PWM输出,并且电机1的PWM输出采用了更高的控制精度,电机2则需要与其他设备共同控制,仅需要一个更高的频率即可。