控制arduino Nano 之L298N PWM输出

本人小白一个,利用暑假自学一些小东西。想分享一些学习心得,如有不妥之处,希望各位前辈指正。刚接触l298n,想要利用nano输出pwm控制智能小车转速。话不多说,先上硬货。

int IN1=4;
int IN2=5;
int IN3=6;
int IN4=7;
int ENA=10;//使能端口1
int ENB=11;//使能端口2
int i;
//数字端口4与5为一组,6与7为另一组

//数字端口10 11 作为直流电机的使能端
void setup() {    
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
}
  void Motor1(boolean reverse)//电机1

  if (reverse)
  {
   for(i=0;i<=255;i++)
 
{analogWrite(ENA,i);
analogWrite(ENB,i);
   delay(500);}
  }    
  else 
  {
     for(i=255;i>=0;i--)      
{analogWrite(ENA,i);
analogWrite(ENB,i);
         delay(500);}   
   }
}
void Motor2(boolean reverse)//电机2
{
  if (reverse)
  {
   for(i=0;i<=255;i++)
   {analogWrite(ENB,i);
   delay(500);}
  }    
  else
  {
     for(i=255;i>=0;i--)       
    {analogWrite(ENB,i);
         delay(500);} 
   }
}
void loop()
{
 digitalWrite(IN1,HIGH);
 digitalWrite(IN2,LOW); 
 digitalWrite(IN3,HIGH);
 digitalWrite(IN4,LOW); 
  Motor1(1);
  Motor1(0);
  Motor2(1);
  Motor2(0);
}//以上代码转自他处;

pwm输出就不介绍了。l298n的ENA,和ENB,原本是通过跳线帽和自带的5V引脚相连,若要实现pwm控制,需要将这两个跳线帽拔掉,连接到nano板子上的pwm输出引脚,而in1~4,可以直接连接到digital引脚上,在loop循环中,digitalWrite函数控制引脚输出电平的高低,实现电机的正反转;Motor函数,通过ENA,ENB 的analogWrite函数实现pwm输出;当我拔掉nano板子上ENA 或B对应的杜邦线后,对应的电机停止转动,证明此时的 digitalWrite(IN1,HIGH);digitalWrite(IN2,LOW); 函数只是控制转向。而在不拔掉两个跳线帽的情况下,digitalWrite(IN1,HIGH);digitalWrite(IN2,LOW);实现电机的全速运转(ENA\ENB接的是5v),证明in1~4始终都只是控制电机转向。(注意哦)当对应电机pwm电压(3~4v)之间时,转速会发生明显的变化。如有错误,请各位前辈指正。

猜你喜欢

转载自blog.csdn.net/qq_41821562/article/details/81287369