1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| // 双引脚PWM调速方案 #define MOTOR_PWM 4 // 必须使用PWM引脚(带~符号) #define MOTOR_DIR 5
void setup() { pinMode(MOTOR_PWM, OUTPUT); pinMode(MOTOR_DIR, OUTPUT); stopMotor(); }
void loop() { // 正向加速 setMotor(255, HIGH); // 全速正转 delay(2000); // 线性减速 for(int i=255; i>=0; i--){ setMotor(i, HIGH); delay(20); } // 反向中速 setMotor(150, LOW); // 70%速度反转 delay(2000); stopMotor(); delay(1000); }
// 电机控制函数 void setMotor(int speed, bool direction) { speed = constrain(speed, 0, 255); // 速度限幅 digitalWrite(MOTOR_DIR, direction); analogWrite(MOTOR_PWM, speed); }
// 停止电机 void stopMotor() { analogWrite(MOTOR_PWM, 0); }
#### 四个引脚控俩轮 // 四引脚PWM调速方案 #define MOTOR_PWM_1 4 // 必须使用PWM引脚(带~符号) #define MOTOR_DIR_1 5 #define MOTOR_PWM_2 6 // 新增引脚 #define MOTOR_DIR_2 7 // 新增引脚
void setup() { pinMode(MOTOR_PWM_1, OUTPUT); pinMode(MOTOR_DIR_1, OUTPUT); pinMode(MOTOR_PWM_2, OUTPUT); pinMode(MOTOR_DIR_2, OUTPUT); stopMotor(); }
void loop() { // 正向加速 setMotor(150, HIGH); delay(1000); // 停止 stopMotor(); delay(1000); // 反向加速 setMotor(150, LOW); delay(1000); stopMotor(); delay(1000); }
// 电机控制函数 void setMotor(int speed, bool direction) { speed = constrain(speed, 0, 150); // 速度限幅 digitalWrite(MOTOR_DIR_1, diQrection); analogWrite(MOTOR_PWM_1, speed); digitalWrite(MOTOR_DIR_2, direction); analogWrite(MOTOR_PWM_2, speed); }
// 停止电机 void stopMotor() { analogWrite(MOTOR_PWM_1, 0); analogWrite(MOTOR_PWM_2, 0); }
|