【Arduino】arduino使用l298n的代码分享

一、接线

 

二、使用步骤


int Left_motor_go=8;     //左电机前进(IN1)
int Left_motor_back=9;     //左电机后退(IN2)
int Right_motor_go=10;    // 右电机前进(IN3)
int Right_motor_back=11;    // 右电机后退(IN4)
char getstr;
  int moshi = 0;
#include <SoftwareSerial.h>
//这是软串口通讯arduino和esp8266-Mode连接的库函数
SoftwareSerial youSerial(50, 51); //RX=50,TX=51 需分配Mega 和 Mega 2560 上并非所有引脚都支持更改中断,因此只有以下引脚可用于 RX:10、11、12、13、14、15、50、51、52、53、A8 (62)、A9 (63)、A10 (64)、A11 (65)、A12 (66)、A13 (67)、A14 (68)、A15 (69)。


void setup()
{
  //红外模块初始化
  //初始化电机驱动IO为输出方式

  pinMode(Left_motor_go,OUTPUT); // PIN 8 8脚无PWM功能
  pinMode(Left_motor_back,OUTPUT); // PIN 9 (PWM)
  pinMode(Right_motor_go,OUTPUT);// PIN 10 (PWM) 
  pinMode(Right_motor_back,OUTPUT);// PIN 11 (PWM)

  Serial.begin(9600);
  youSerial.begin(9600);
}

void run()     // 前进
{
  digitalWrite(Right_motor_go,HIGH);  // 右电机前进
  digitalWrite(Right_motor_back,LOW);     
  digitalWrite(Left_motor_go,HIGH);  // 左电机前进
  digitalWrite(Left_motor_back,LOW);
  
  analogWrite(Right_motor_go,200);//PWM比例0~255调速,左右轮差异略增减
  analogWrite(Right_motor_back,0); 
  analogWrite(Left_motor_go,200);//PWM比例0~255调速,左右轮差异略增减
  analogWrite(Left_motor_back,0);
}
void back()     // 后退
{
  digitalWrite(Right_motor_go,LOW);  // 右电机后退
  digitalWrite(Right_motor_back,HIGH);     
  digitalWrite(Left_motor_go,LOW);  // 左电机后退
  digitalWrite(Left_motor_back,HIGH);
  analogWrite(Right_motor_go,0);//PWM比例0~255调速,左右轮差异略增减
  analogWrite(Right_motor_back,200); 
  analogWrite(Left_motor_go,0);//PWM比例0~255调速,左右轮差异略增减
  analogWrite(Left_motor_back,200);
}
void left()     // 左转
{
  digitalWrite(Right_motor_go,HIGH);  // 右电机前进
  digitalWrite(Right_motor_back,LOW);     
  digitalWrite(Left_motor_go,LOW);  // 左电机后退
  digitalWrite(Left_motor_back,HIGH);
  analogWrite(Right_motor_go,200);//PWM比例0~255调速,左右轮差异略增减
  analogWrite(Right_motor_back,0); 
  analogWrite(Left_motor_go,0);//PWM比例0~255调速,左右轮差异略增减
  analogWrite(Left_motor_back,100);//内圆,幅度小
}
void right()     // 右转
{
  digitalWrite(Right_motor_go,LOW);  // 右电机后退
  digitalWrite(Right_motor_back,HIGH);     
  digitalWrite(Left_motor_go,HIGH);  // 左电机前进
  digitalWrite(Left_motor_back,LOW);
  analogWrite(Right_motor_go,0);//PWM比例0~255调速,左右轮差异略增减
  analogWrite(Right_motor_back,100); 
  analogWrite(Left_motor_go,200);//PWM比例0~255调速,左右轮差异略增减
  analogWrite(Left_motor_back,0);
}
void stop()     // 停止
{
  digitalWrite(Right_motor_go,LOW);  // 右电机停止
  digitalWrite(Right_motor_back,LOW);    
  analogWrite(Left_motor_go,0);//PWM比例0~255调速,左右轮差异略增减
  analogWrite(Left_motor_back,0); 
  digitalWrite(Left_motor_go,LOW);  // 左电机停止
  digitalWrite(Left_motor_back,LOW);
  analogWrite(Left_motor_go,0);//PWM比例0~255调速,左右轮差异略增减
  analogWrite(Left_motor_back,0); 
  analogWrite(Left_motor_go,0);//PWM比例0~255调速,左右轮差异略增减
  analogWrite(Left_motor_back,0);
}
void moshiqiehuang()
{

  }
void zhongzhi()
{
  
  }
void loop()
{
  if(youSerial.available() > 0)
  {
  getstr=youSerial.read();

  }

  switch(getstr){
   case 'w': 
     Serial.println("run");
     run();break;
   case 'a': 
     Serial.println("left");
     left();break; 
   case 'd': 
     Serial.println("right");
     right();break;
   case 's': 
     Serial.println("back");
     back();break;  
   case 't': 
     Serial.println("stop");
     stop();break; 
   case 'q':
     Serial.println("moshiqiehuang");
//     moshiqiehuang();break;
   case 'z':
     Serial.println("zhongzhi");
     zhongzhi();break;
  }
}


总结

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿德奶绿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值