【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;
  }
}


总结

  • 8
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
是一个简单的Arduino循迹小车代码使用L298N电机驱动板控制小车的运动: ```arduino //定义引脚 int leftMotorForward = 5; int leftMotorBackward = 6; int rightMotorForward = 10; int rightMotorBackward = 9; int leftSensor = A0; int rightSensor = A1; void setup() { //设置引脚为输出或输入 pinMode(leftMotorForward, OUTPUT); pinMode(leftMotorBackward, OUTPUT); pinMode(rightMotorForward, OUTPUT); pinMode(rightMotorBackward, OUTPUT); pinMode(leftSensor, INPUT); pinMode(rightSensor, INPUT); } void loop() { //读取左右两个传感器的值 int leftValue = analogRead(leftSensor); int rightValue = analogRead(rightSensor); //如果左边的传感器检测到黑线,则向左转 if (leftValue < 500) { digitalWrite(leftMotorForward, LOW); digitalWrite(leftMotorBackward, HIGH); digitalWrite(rightMotorForward, HIGH); digitalWrite(rightMotorBackward, LOW); } //如果右边的传感器检测到黑线,则向右转 else if (rightValue < 500) { digitalWrite(leftMotorForward, HIGH); digitalWrite(leftMotorBackward, LOW); digitalWrite(rightMotorForward, LOW); digitalWrite(rightMotorBackward, HIGH); } //如果两个传感器都没有检测到黑线,则直行 else { digitalWrite(leftMotorForward, HIGH); digitalWrite(leftMotorBackward, LOW); digitalWrite(rightMotorForward, HIGH); digitalWrite(rightMotorBackward, LOW); } } ``` 这个代码使用两个红外线传感器来检测黑线,如果左边的传感器检测到黑线,则向左转;如果右边的传感器检测到黑线,则向右转;如果两个传感器都没有检测到黑线,则直行。你可以根据自己的需要进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

阿德奶绿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值