本节书摘来华章计算机《Arduino开发实战指南:机器人卷》一书中的第3章 ,第3.6节,黄文恺 伍冯洁 陈 虹 编著更多章节内容可以访问云栖社区“华章计算机”公众号查看。
3.6 编程原理与示例程序
1.搭建硬件
- Arduino Uno板 1块
- L298N模块 1块
- 1∶48直流减速电机 2个
- 杜邦线 若干
2.示例程序
根据图3.12所示直流电机驱动电路,编写程序以实现双路电机顺时针加速10秒,然后反转减速10秒,并循环交替上述过程。其中,Arduino Uno板与L298N模块的接线情况如
Arduino Uno驱动L298N控制直流电机正、反转示例程序清单如下:
#define IN1 3
#define IN2 4
#define IN3 6
#define IN4 7
#define PWMA 10
#define PWMB 11
void setup()
{pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(IN3,OUTPUT);
pinMode(IN4,OUTPUT);
}
void loop()
{
int i;
for(i=0;i<=255;i++)
{
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
analogWrite(PWMA,i); // 写入电机1速度值
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
analogWrite(PWMB,i); // 写入电机2速度值
delay(40);
}
analogWrite(PWMA,0); // 停转
analogWrite(PWMB,0); // 停转
delay(2000); // 停转2秒
for(i=0;i<=255;i++)
{ digitalWrite(IN1,LOW); // 改变电机转向
digitalWrite(IN2,HIGH); // 改变电机转向
analogWrite(PWMA,i); // 写入电机1速度值
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(PWMB,i); // 写入电机2速度值
delay(40);
}
}