可以控制两个电机,控制很简单的
输出A 输出B 分别接两个直流电机。
12V供电 这个是外部电源为驱动板供电的接口,一般驱动电压实际可以接受的输入范围是7~12V,此时可以使能板载的5V逻辑供电。当使用大于12V的驱动电压时,为了避免稳压芯片损坏,首先要拔掉板载5V输出使能的跳线帽,然后在5V输出端口外部接入5V电压对L298N内部逻辑供电。
5V供电 (引出5V电压接到Arduino板,给Arduino板供电(驱动电压7~12V)连接到UNO板的5V)同时Arduino板也要引出一条GND线,连接到L298N的GND与外部电源共地。
ENA ENB通道A使能,通道B使能,当你不用PWM时不需要拔掉跳线帽,当你需要PWM时,将需要拔掉跳线帽,接到arduino上的模拟输入输出接口,我的只需要外侧接上,下面回介绍。
IN1 IN2 IN3 IN4逻辑输出口,其中IN1 IN2 控制一个电机的转动,IN3 IN4 控制另一个电机的转动,只要一个置高 一个置低,就可以让电机转动起来。
直流电机——直流电机的转速和电压成正比。
PWM就是改变占空比改变电压来改变转速
不使用PWM输入的测试代码,这时把跳线帽插上,为了方便,我引出两条线直接短接就行
下面是代码:尽量简单吧,会前进,左转后退停止动动手改改就行
//测试电机,让两个电机直走
int input1 = 2; // 定义uno的pin 2 向 input1 输出
int input2 = 4; // 定义uno的pin 4 向 input2 输出
int input3 =7; // 定义uno的pin 7 向 input3 输出
int input4 =8; // 定义uno的pin 8 向 input4 输出
void setup() {
Serial.begin (9600);
//初始化各IO,模式为OUTPUT 输出模式
pinMode(input1,OUTPUT);
pinMode(input2,OUTPUT);
pinMode(input3,OUTPUT);
pinMode(input4,OUTPUT);
}
void loop() {
//forward 前进
digitalWrite(input1,HIGH); //给高电平
digitalWrite(input2,LOW); //给低电平
digitalWrite(input3,HIGH); //给高电平
digitalWrite(input4,LOW); //给低电平
delay(3000); //延时1秒
}
以下是PWM调速的小车,速度从快到慢!接线端口是外侧那个!我的是这样!
//测试电机,让两个电机直走
int input1 = 2; // 定义uno的pin 2 向 input1 输出
int input2 = 4; // 定义uno的pin 4 向 input2 输出
int input3 =12; // 定义uno的pin 7 向 input3 输出
int input4 =13; // 定义uno的pin 8 向 input4 输出
//PWM
int ENA1=5; //电机A使能PWM输出,需要接在Arduino上有~标识的IO口,才有PWM
int ENB1=6; //电机A使能PWM输出
void setup() {
Serial.begin (9600);
//初始化各IO,模式为OUTPUT 输出模式
pinMode(input1,OUTPUT);
pinMode(input2,OUTPUT);
pinMode(input3,OUTPUT);
pinMode(input4,OUTPUT);
}
//测试函数
void text() {
//forward 前进
digitalWrite(input1,HIGH); //给高电平
digitalWrite(input2,LOW); //给低电平
digitalWrite(input3,HIGH); //给高电平
digitalWrite(input4,LOW); //给低电平
// delay(3000); //延时1秒
}
void loop()
{
text();//测试电机,给个提示
delay(2000);
while(1){
for(int PWM=255;PWM>100;PWM--)
{
Serial.println(PWM);
analogWrite(ENA1,PWM);
analogWrite(ENB1,PWM);
digitalWrite(input1,HIGH);
digitalWrite(input2,LOW);
digitalWrite(input3,HIGH);
digitalWrite(input4,LOW);
delay(50);//延时,速度变化的快慢,PWM变化速度
}
for(int PWM=100;PWM<255;PWM++)
{
Serial.println(PWM);
analogWrite(ENA1,PWM);
analogWrite(ENB1,PWM);
digitalWrite(input1,HIGH);
digitalWrite(input2,LOW);
digitalWrite(input3,HIGH);
digitalWrite(input4,LOW);
delay(50);
}
}
//delay(3000); //延时0.5秒
}