L298N双直流电机控制代码
直流电机控制代码
ARDUINO 代码复制打印
/为了看清电机的转动,使用了 带齿轮减速箱的微型马达,由于它的需要的电压低,可以直接使用Arduino板上的5伏电压。L298N也使Arduino板载 5伏电压L298N电机驱动自己焊的///这个电机驱动板使用数字端口4 5 6 7 控制电机//正确连接你的电机到M1+ M1- M2+ M2-//数字端口10 11 连接到L298N的使能端接口//下载代码到Arduino/// 控制两个直流电机的正反转//本程序作用两个直流电机先正转一秒 暂停一秒 反转一秒 如此反复int IN1=4;int IN2=5;int IN3=6;int IN4=7;int EN1=10;//使能端口1int EN2=11;//使能端口2//数字端口4与5为一组,6与7为另一组//数字端口10 11 作为直流电机的使能端void Motor1(boolean reverse)//电机1正转{if (reverse) //正转{ digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW);}else //反转{ digitalWrite(IN1,LOW); digitalWrite(IN2,HIGH);}}void Motor2(boolean reverse)//电机2转动{if (reverse) //正转{ digitalWrite(IN3,HIGH); digitalWrite(IN4,LOW);}else //反转{ digitalWrite(IN3,LOW); digitalWrite(IN4,HIGH);}}void aa()//先正转1秒停1秒后反转1秒{//正转digitalWrite(IN3,LOW);digitalWrite(IN4,HIGH);digitalWrite(IN1,LOW);digitalWrite(IN2,HIGH); delay(1000);//暂停一秒stopMotor(true);delay(1000); stopMotor(false);//恢复电机使能端高电平//反转digitalWrite(IN3,HIGH);digitalWrite(IN4,LOW);digitalWrite(IN1,HIGH);digitalWrite(IN2,LOW);delay(1000);// 暂停stopMotor(true);delay(1000); stopMotor(false);}void stopMotor(boolean r)//电机停转{if (r){ analogWrite(EN1,0); analogWrite(EN2,0);}else{ analogWrite(EN1,255); analogWrite(EN2,255);}} void setup(){int i;for (i=4;i<=7;i++) //为Ardunio 电机驱动板 pinMode(i,OUTPUT); //设置数字端口4,5,6,7为输出模式for (i=4;i<=7;i++) digitalWrite(i,OUTPUT); //设置数字端口4,5,6,7为HIGH,电机保持不动pinMode(10,OUTPUT);//设置数字端口1011为输出模式pinMode(11,OUTPUT);Serial.begin(9600);}void loop(){aa();//两个直流电机正转1秒 暂停一秒 反转一秒}
/*
为了看清电机的转动,使用了 带齿轮减速箱的微型马达,
由于它的需要的电压低,可以直接使用Arduino板上的5伏电压。
L298N也使Arduino板载 5伏电压
L298N电机驱动自己焊的
*/
//这个电机驱动板使用数字端口4 5 6 7 控制电机
//正确连接你的电机到M1+ M1- M2+ M2-
//数字端口10 11 连接到L298N的使能端接口
//下载代码到Arduino/
// 控制两个直流电机的正反转
//本程序作用两个直流电机先正转一秒 暂停一秒 反转一秒 如此反复
int IN1=4;
int IN2=5;
int IN3=6;
int IN4=7;
int EN1=10;//使能端口1
int EN2=11;//使能端口2
//数字端口4与5为一组,6与7为另一组
//数字端口10 11 作为直流电机的使能端
void Motor1(boolean reverse)//电机1正转
{
if (reverse) //正转
{
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
}
else //反转
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
}
}
void Motor2(boolean reverse)//电机2转动
{
if (reverse) //正转
{
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
}
else //反转
{
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
}
}
void aa()//先正转1秒停1秒后反转1秒
{
//正转
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
delay(1000);
//暂停一秒
stopMotor(true);
delay(1000);
stopMotor(false);//恢复电机使能端高电平
//反转
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
delay(1000);
// 暂停
stopMotor(true);
delay(1000);
stopMotor(false);
}
void stopMotor(boolean r)//电机停转
{
if (r)
{
analogWrite(EN1,0);
analogWrite(EN2,0);
}
else
{
analogWrite(EN1,255);
analogWrite(EN2,255);
}
}
void setup()
{
int i;
for (i=4;i<=7;i++) //为Ardunio 电机驱动板
pinMode(i,OUTPUT); //设置数字端口4,5,6,7为输出模式
for (i=4;i<=7;i++)
digitalWrite(i,OUTPUT); //设置数字端口4,5,6,7为HIGH,电机保持不动
pinMode(10,OUTPUT);//设置数字端口1011为输出模式
pinMode(11,OUTPUT);
Serial.begin(9600);
}
void loop()
{
aa();//两个直流电机正转1秒 暂停一秒 反转一秒
}
via - 极客工坊