第十享,电机驱动-L298N

网友投稿 2019-04-10 10:34

如图

https://cdn.china-scratch.com/Public/Home/images/grey.gif

    L298N,12V供电,可提供5V输出;四个输入引脚,IN1、IN2为一组,输入电平一高一低控制输出引脚OUT1、OUT2连接电机的正反转,另外一组同样。

    电路连接图如下图

https://cdn.china-scratch.com/Public/Home/images/grey.gif

    上代码

int IN1 = 5;                             //定义L298N四根数据引脚

int IN2 = 6;

int IN3 = 9;

int IN4 = 10;

void setup() {

  pinMode(IN1, OUTPUT);       

  pinMode(IN2, OUTPUT);

  pinMode(IN3, OUTPUT);

  pinMode(IN4, OUTPUT);

}

void loop() {                           //两路一高一低,全速前进

  digitalWrite(IN1, HIGH);  

  digitalWrite(IN2, LOW); 

  digitalWrite(IN3, HIGH); 

  digitalWrite(IN4, LOW); 

  delay(2000);              

  digitalWrite(IN1, LOW);      //两路全低,停停不要走

  digitalWrite(IN2, LOW); 

  digitalWrite(IN3, LOW); 

  digitalWrite(IN4, LOW); 

  delay(2000);  

  digitalWrite(IN1, LOW);      //两路一低一高,全速后退

  digitalWrite(IN2, HIGH); 

  digitalWrite(IN3, LOW); 

  digitalWrite(IN4, HIGH); 

  delay(2000);  

  

  digitalWrite(IN1, LOW);     //两路全低,停停不要走

  digitalWrite(IN2, LOW); 

  digitalWrite(IN3, LOW); 

  digitalWrite(IN4, LOW); 

  delay(2000);    

  

  analogWrite(IN1, 100);       //PWM输出,可调速,0-255

  analogWrite(IN2, LOW); 

  analogWrite(IN3, 100); 

  analogWrite(IN4, LOW); 

  delay(2000); 

  

  digitalWrite(IN1, LOW);  

  digitalWrite(IN2, LOW); 

  digitalWrite(IN3, LOW); 

  digitalWrite(IN4, LOW); 

  delay(2000);

}

    可调速很重要,因为电机和减速箱会有出场误差,即使是全速,转速也是有差别的,可调节使其转速相同可以走直线。再者,跑太快会来不及刹车,表现出来会显得避障或循迹传感器有延迟,所以让他们跑慢点儿。同样,转弯的时候,可控制其一个正转一个反转,或一个快一个慢,使其平滑转弯。

    上面的代码,看一下效果。

--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com