L298N 小车应用(附代码)

2023-11-19

L298N

L298N是目前智能小车应用很广泛的价格也比较便宜的电机驱动,用来驱动直流电机。

L298N

输出A 输出B 分别接两个直流电机,电机两根线随便接,如果发现两电机方向是反着的,就调换下接线就ok了。

12V供电 这个是外部电源为驱动板供电的接口,一般驱动电压实际可以接受的输入范围是7~12V,此时可以使能板载的5V逻辑供电。当使用大于12V的驱动电压时,为了避免稳压芯片损坏,首先要拔掉板载5V输出使能的跳线帽,然后在5V输出端口外部接入5V电压对L298N内部逻辑供电。

5V供电 引出5V电压接到Arduino板,给Arduino板供电(驱动电压7~12V)连接到UNO板的5V,同时Arduino板也要引出一条GND线,连接到L298N的GND与外部电源共地。

ENA ENB通道A使能,通道B使能,当你不用PWM时不需要拔掉跳线帽,当你需要PWM时,将需要拔掉跳线帽,接到arduino上的模拟输入输出接口。

IN1 IN2 IN3 IN4逻辑输出口,其中IN1 IN2 控制一个电机的转动,IN3 IN4 控制另一个电机的转动,只要一个置高 一个置低,就可以让电机转动起来。

硬件连线

Ardunio    <-->   L298N
5V         <-->   5V供电(非必要)
GND        <-->   GND(非必要)
输出引脚    <-->   ENA ENB IN1~4
                  外部电源  12V供电  GND

不使用PWM实现小车的部分功能代码

int input1=5; // 定义uno的pin 5 向 in1 输出   
int input2=6; // 定义uno的pin 6 向 in2 输出  
int input3=9; // 定义uno的pin 9 向 in3 输出  
int input4=10; // 定义uno的pin 10 向 in4 输出  
 
void setup() {  
Serial.begin (9600);  
//初始化各IO,模式为OUTPUT 输出模式  
pinMode(input1,OUTPUT);  
pinMode(input2,OUTPUT);  
pinMode(input3,OUTPUT);  
pinMode(input4,OUTPUT);    
}
 
void loop(){  
  //forward 向前转  
 digitalWrite(input1,HIGH); //给高电平  
 digitalWrite(input2,LOW);  //给低电平  
 digitalWrite(input3,HIGH); //给高电平  
 digitalWrite(input4,LOW);  //给低电平  
 delay(1000);   //延时1秒  
 
 //stop 停止  
 digitalWrite(input1,LOW);  
 digitalWrite(input2,LOW);    
 digitalWrite(input3,LOW);  
 digitalWrite(input4,LOW);    
 delay(500);  //延时0.5秒  
    
//back 向后转  
 digitalWrite(input1,LOW);  
 digitalWrite(input2,HIGH);    
 digitalWrite(input3,LOW);  
 digitalWrite(input4,HIGH);    
 delay(1000);      
} 

使用PWM调制控制小车

 void forward();
 void turnleft();
 void turnright();
 void stopcar();
 
int ENA1=5;
int ENB1=6;
int IN1=2;
int IN2=3;
int IN3=4;
int IN4=7;

int ENA2=9;
int ENB2=10;
int IN5=8;
int IN6=11;
int IN7=12;
int IN8=13;

void setup() 
{
  
  for(int i=2;i<=13;i++){
  pinMode(i,OUTPUT);
  }
  Serial.begin(9600);  
}
int x=1500;
void loop() 
{ 
 forward();
 delay(x);
 turnleft();
 delay(x/3);
 forward();
 delay(x);
 turnright();
 delay(x/3);
 stopcar();
}
void forward(){
  analogWrite(ENA1,255);
  analogWrite(ENB1,255);
  digitalWrite(IN1,HIGH);
  digitalWrite(IN2,LOW);
  digitalWrite(IN3,HIGH);
  digitalWrite(IN4,LOW);
  analogWrite(ENA2,255);
  analogWrite(ENB2,255);
  digitalWrite(IN5,HIGH);
  digitalWrite(IN6,LOW);
  digitalWrite(IN7,HIGH);
  digitalWrite(IN8,LOW);
}
void turnback(){
  analogWrite(ENA1,255);
  analogWrite(ENB1,255);
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,HIGH);
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,HIGH);
  analogWrite(ENA2,255);
  analogWrite(ENB2,255);
  digitalWrite(IN5,LOW);
  digitalWrite(IN6,HIGH);
  digitalWrite(IN7,LOW);
  digitalWrite(IN8,HIGH);
  }
void stopcar(){
  analogWrite(ENA1,0);
  analogWrite(ENB1,0);
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,LOW);
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,LOW);
  analogWrite(ENA2,0);
  analogWrite(ENB2,0);
  digitalWrite(IN5,LOW);
  digitalWrite(IN6,LOW);
  digitalWrite(IN7,LOW);
  digitalWrite(IN8,LOW);
  }
  void turnleft(){
  analogWrite(ENA1,255);
  analogWrite(ENB1,255);
  digitalWrite(IN1,HIGH);
  digitalWrite(IN2,LOW);
  digitalWrite(IN3,HIGH);
  digitalWrite(IN4,LOW);
  analogWrite(ENA2,255);
  analogWrite(ENB2,255);
  digitalWrite(IN5,LOW);
  digitalWrite(IN6,HIGH);
  digitalWrite(IN7,LOW);
  digitalWrite(IN8,HIGH);
  }
  
void turnright(){
  analogWrite(ENA1,255);
  analogWrite(ENB1,255);
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,HIGH);
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,HIGH);
  analogWrite(ENA2,255);
  analogWrite(ENB2,255);
  digitalWrite(IN5,HIGH);
  digitalWrite(IN6,LOW);
  digitalWrite(IN7,HIGH);
  digitalWrite(IN8,LOW);

  }

(程序代码直接复制粘贴可能编译出错,因为有中文空格或者字符!尽管我是用英文输入的,但经常编译出现中文的错误。)
这样的小车只能按照写好的程序运动,如果我们用蓝牙或者红外遥控来控制小车才能使小车按照我们的想法随意运动,下次介绍。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

L298N 小车应用(附代码) 的相关文章

随机推荐

  • 那些踩过的declared implicitly的坑

    缺少头文件 我的本意是想做串口打印进行调试 于是我在usart c中重写了这两个函数 这里顺便记录下如何串口打印 usart c中 int fputc int ch FILE f HAL UART Transmit huart1 uint8
  • 2023计算机四非保研(复试:东北大学,成电,西电,浙软,中海洋,天大)

    文章目录 个人情况 夏令营情况 预推免情况 进入复试 中国海洋大学 学硕 浙大软院 专硕 天津大学智算 专硕 中科院网络中心 专硕 西电网安院 学硕 东北大学计算机 学硕 成电计算机 专硕 最终offer 感想 个人情况 本科学校 西北某四
  • firmware-mod-kit工具安装和使用说明

    一 firmware mod kit工具的安装 firmware mod kit工具的功能和binwalk工具的类似 其实firmware mod kit工具在功能上有调用binwalk工具提供的功能以及其他的固件解包工具的整合 下载fir
  • pp-human在rk3588上部署

    https github com leeguandong Yolov5 rknnlite2https github com leeguandong Yolov5 rknnlite2 这是我在paddledetection和rknn官方基础上
  • Jmeter使用JDBC对数据库压测

    背景说明 压测除了全链路压测外 有时候也需要对指定服务进行性能测试 这里以jmeter工具对数据库进行压测说明 压测不同数据库需要安装不同的数据库驱动 这里以mysql为例进行压测 步骤一 数据库驱动安装 1 进入mysql官网 根据不同m
  • 课程设计心得_关于switch输入字母进入死循环问题

    做C语言课程设计时 采用了大量的switch 在后期找bug时 当输入字符类型时 如a 之类的 程序进入了死循环 但又不想换成其他的 主要是懒 不想大量改动 void menu windows int n system cls fflush
  • Python3 字典

    字典是另一种可变容器模型 且可存储任意类型对象 字典的每个键值 key gt value 对用冒号 分割 每个对之间用逗号 分割 整个字典包括在花括号 中 格式如下所示 注意 dict 作为 Python 的关键字和内置函数 变量名不建议命
  • 安全运维之Resin应用服务器中间件安装使用与安全配置

    本章目录 0x00 快速入门 0x01 Resin安装 0x02 Resin配置文件 0x03 Resin应用 0x04 Security 0x05 Help 附录补充 1 Resin 日志记录之format配置详解 原文地址 https
  • 登入服务器bmc_如何使用 BMCTool 远程管理 PowerEdge C 系列服务器

    文章内容 症状 本文介绍了如何使用 BMCTool 管理 PowerEdge C 系列服务器 BMC 工具旨在压缩和改进 IPMITool 的功能 可从poweredgec dell com下载 需要安装 OpenIPMI 和 IPMITo
  • redis学习笔记(七):redis常见问题和解决方案

    目录 一 缓存穿透 1 基本介绍 2 解决方案 1 布隆过滤器 2 缓存空对象 3 参数校验 4 对比 二 缓存击穿 1 基本介绍 2 解决方案 1 互斥锁 2 永不过期 3 两种方案对比 三 缓存雪崩 1 基本介绍 2 解决方案 1 过期
  • ODBC连接ORACLE数据库的设置

    一 建立服务名1 选择 Net8 Configuration Assistant 选择 本地网络服务名配置 2 选择 添加 3 选择 Oracle 8i数据库或服务 4 输入服务名 此为远程数据库已经定制好的数据库服务名字 比如 ORCL
  • python map和lambda

    map和lambda 前言 一 map 二 lambda 三 map和lambda的使用 前言 一 map map是python的内置函数 根据提供的函数对指定序列做映射 map function literation function 函
  • ngrok服务端搭建并使用docker解放80端口

    start 前言 为什么要搭建ngrok服务端 为什么使用docker 1 开发环境下调试微信公众号使用 要求80端口 2 ngrok配置中要指定 http的端口 如果指定80端口的话 会和nginx抢端口 nginx肯定比ngrok重要
  • Ajax核心技术之XMLHttpRequest对象

    XMLHttpRequest对象到底是什么 跟Ajax到底有什么联系 在了解它之前还是要先了解一下Ajax的功能 与以往的技术不同 Ajax是为了实现异步操作 那么关于异步 好像一个管理者安排好一个项目计划后 将这个项目交给下属去做 而自己
  • 揭秘win10系统CPU占用100%的真正原因/找出那些罪魁祸首

    经常会有 Win10 用户反应 电脑没有运行太多程序 但是在任务管理器中 经常可以看到电脑CPU占用率却一直居高不下 那么 CPU占用100 的正真原因是什么呢 下面小编收集了一些针对CPU占用过高的原因及解决办法 这些可能就是导致你CPU
  • Spring Boot 快速入门、开发环境热部署

    SpringBoot快速上手 准备工作 我们将学习如何快速的创建一个Spring Boot应用 并且实现一个简单的Http请求处理 通过这个例子对Spring Boot有一个初步的了解 并体验其结构简单 开发快速的特性 我的环境准备 jav
  • Sping之自动注入-1

    最近终于能静下心来 一步步的学习Java Web开发 在学习的过程中 遇到太多的问题 一开始好些问题真是不知道怎么解决 在这里要非常感谢 Sping In Action 一书的作者 感谢他能写出此书 让我受益匪浅 您辛苦了 本着 相互学习
  • linux查看已安装的软件

    这本阿里P8撰写的算法笔记 再次推荐给大家 身边不少朋友学完这本书最后加入大厂 Github 疯传 史上最强悍 阿里大佬 LeetCode刷题手册 开放下载了 因为linux安装软件的方式比较多 所以没有一个通用的办法能查到某些软件是否安装
  • docker run之后 docker ps 不显示运行中的容器

    docker run 启动mysql以后 生成的对应容器直接exited 1 问题 今天在部署项目过程中 用docker run指令启动容器返回了容器id 但是用docker ps指令却不显示刚才启动的容器 问题查找 由于docker ps
  • L298N 小车应用(附代码)

    L298N L298N是目前智能小车应用很广泛的价格也比较便宜的电机驱动 用来驱动直流电机 L298N 输出A 输出B 分别接两个直流电机 电机两根线随便接 如果发现两电机方向是反着的 就调换下接线就ok了 12V供电 这个是外部电源为驱动