当前位置: 首页 > news >正文

基于STM32F103控制L298N驱动两相四线步进电机

文章目录

  • 前言
  • 一、模块参数
  • 二、接口说明
  • 三、准备工作
  • 四、直流电机驱动
    • 引脚接线
    • 效果展示
  • 五、两相四线步进电机驱动
    • 步进电机相关概念
    • 拍数驱动时序
    • 引脚接线
    • 效果展示
  • 六、参考示例


前言

  L298N 是一种常见的双 H 桥电机驱动模块,广泛用于驱动直流电机和步进电机。它基于 ST 的 L298N 芯片,具有高电流承载能力和灵活的控制模式,适合机器人、自动化设备等领域。

一、模块参数

1、驱动芯片:L298N 双 H 桥直流电机驱动芯片
2、驱动电压 Vs:+5V~+35V ; 如需要板内取电,则供电范围Vs:+7V~+35V
3、驱动电流Io:2A(MAX)
4、逻辑电压Vss:+5V~+7V(可板内取电+5V)
5、逻辑电流:0~36mA
6、控制信号输入电压范围:
  低电平:-0.3V≤Vin≤1.5V
  高电平:2.3V≤Vin≤Vss
7、使能信号输入电压范围:
  低电平:-0.3≤Vin≤1.5V(控制信号无效)
  高电平:2.3V≤Vin≤Vss(控制信号有效)
8、最大功耗:20W(温度 T=75℃时)
9、存储温度:-25℃~+130℃

二、接口说明

关于模块供电说明:
  供电一:板上除了L298N外,还有7805的5V稳压芯片,当供电为5V到7V区间的时候模块内置的7805芯片不能正常工作的。所以供电端接5-7V外部电源只负责给电机供电,然后逻辑端外接5V逻辑电源。
  供电二:当供电电压为7-12V时,插上板载5V使能的跳线帽,此时的逻辑端不但不用外接5V电源,还可以输出5V为单片机进行供电。
  供电三:当供电在大于12V的时候,此时必须断开板载5V使能跳线帽,再在逻辑端子接入5V电源给芯片供电。如果不断开板载使能跳线帽的话,可能会损坏内置的7805的稳压芯片。
  注意:板子没有升降压功能,供电范围要根据接的电机选择,避免供电过低过高带不动电机或烧坏电机,如驱动12V的电机,则接12V的电源。

三、准备工作

  STM32F103最小系统板、L298N驱动模块、2个直流电机或1个两相四线步进电机、EC11旋转编码器模块以及供电电源。

四、直流电机驱动

  该驱动板可驱动 2 路直流电机,使能端 ENA、ENB 为高电平时有效,控制方式及直流电机状态表如下所示:

  若要对直流电机进行 PWM 调速,需设置 IN1 和 IN2,确定电机的转动方向,然后对使能端输出 PWM 脉冲,即可实现调速。注意当使能信号为 0 时,电机处于自由停止状态;当使能信号为 1,且 IN1 和 IN2 为 00 或 11 时,电机处于制动状态,阻止电机转动。IN1和IN2控制输出A,IN3和IN4控制输出B。

引脚接线

L298NSTM32F103 / 电源 / 直流电机
输出A,B连接电机1,2
12V供电电源正
供电GND电源负
旋转编码器A,B,SPB3,PB1,PB0
通道A,B使能去掉跳线帽,使能A接PA6,使能B接PA7 ,PWM调速
IN1,IN2PA0,PA1
IN3,IN4PA2,PA3

效果展示

五、两相四线步进电机驱动

步进电机相关概念

  相数——步进电机的N、S磁场的激磁线圈对数,如两相四线步进电机,就有两对极N、S磁场的激磁线圈,四线A+、A-、B+、B-,A+A-,B+B-是连通的,在不知道四线哪两两线为一对激磁线圈,通过短接两两线有明显阻力变化的则为一对线圈。
  拍数——转子转动一周,定子绕组通电的次数,以两相电机为例,有两相四拍运行方式即(A+)—(B+)—(A-)—(B-),两相八拍运行方式(A+)—(A+B+)—(B+)–(B+A-)—(A-)—(A-B-)—(B-)–(B-A+),以此循环。
  步距角——步进电机接收到一个脉冲信号后,驱动电机按设定的方向转动的一个固定角度。如两相四线步进电机的基本步距角是1.8°,即一个脉冲走1.8°。
  同时,为了减弱或消除步进电机的低频振动开发了细分驱动技术。细分后电机运行时的实际步距角是基本步距角的几分之一,微步即1/4-step、1/8-step、1/16-step等。 比如,两相步进电机的基本步距角是1.8°,如果没有细分,则是200个脉冲走一圈360°。细分是通过驱动器靠精确控制电机的相电流所产生的,如果是10细分,则发一个脉冲电机走0.18°,即2000个脉冲走一圈360°,电机的精度能否达到或接近0.18°,还取决于细分驱动器的细分电流控制精度等其它因素。

细分驱动单圈步数=360°÷角度
四拍(1细分)1.8°—— 单圈200步
八拍(2细分)0.9°—— 单圈400步
十六拍(4细分)0.45°—— 单圈800步
三十二拍(8细分)0.225°—— 单圈1600步
六十四拍(16细分)0.1125°—— 单圈3200步

拍数驱动时序

  单4拍(整步)方式驱动时序

  双4拍(整步)方式驱动时序

  电机转动方向如下所示,(A+)—(B+)—(A-)—(B-),以此循环,

特性单四拍双四拍
通电相数每次一相每次两相
功耗较低较高
步进角一致一致
力矩较小较大
定位稳定性一般更高

  8拍(半步)方式驱动时序

  电机转动方向如下所示,(A+)—(A+B+)—(B+)–(B+A-)—(A-)—(A-B-)—(B-)—(B-A+),以此循环,

  反转时,控制时序倒过来控制就可实现反向转动。

引脚接线

L298NSTM32F103 / 电源 / 两相四线电机
12V供电电源正
供电GND电源负
旋转编码器A,B,SPB3,PB1,PB0
通道A,B使能把跳线帽插回去
IN1,IN2PA0,PA1
IN3,IN4PA2,PA3
OUT1,OUT2A+,A-
OUT3,OUT4B+,B-

效果展示

六、参考示例

main.c

#include "stm32f10x.h"                  // Device header
#include "encoder.h"
#include "l298n.h"
#include "usart.h"
#include "timer.h"
#include "pwm.h"int32_t RxData;int main(void)
{NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);usart_Init();L298N_Init();Encoder_Init();Timer_Inti();PWM_Init();while(1){		RxData =Encoder_Get();//直流电机控制正反转,调速TIM_SetCompare1(TIM3,RxData);if(Encoder_GetKey() == 0){Motor1_Zturn();Motor2_Zturn();}else{Motor1_Rturn();Motor2_Rturn();}//步进电机控制正反转
//		if(Encoder_GetKey() == 0)
//		{
//			switch(RxData)
//			{
//				case 1:
//					ZturndouControl_4();
//					break;
//				case 2:
//					RturndouControl_4();
//					break;
//			}
//		}else{
//			switch(RxData)
//			{
//				case 1:
//					ZturnControl_8();
//					break;
//				case 2:
//					RturnControl_8();
//					break;
//			}
//		}}
}

l298n.c

#include "l298n.h"
#include "delay.h"
#include "timer.h"void L298N_Init(void)
{//通过旋转编码器控制步进电机正转,翻转,加减速,停止GPIO_InitTypeDef GPIO_InitStructurn;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructurn.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructurn.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;GPIO_InitStructurn.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructurn);
}void Motor1_Stop(void)	//电机1停止
{IN1(0);IN2(0);
}void Motor2_Stop(void)	//电机2停止
{IN3(0);IN4(0);
}void ALL_Stop(void)	//两个电机全停止
{IN1(0);IN2(0);IN3(0);IN4(0);
}void Motor1_Zturn(void)	//电机1正转
{IN1(1);IN2(0);
}void Motor1_Rturn(void)	//电机1反转
{IN1(0);IN2(1);
}void Motor2_Zturn(void)	//电机2正转
{IN3(1);IN4(0);
}void Motor2_Rturn(void)	//电机2反转
{IN3(0);IN4(1);
}void Control_4(void)	//单四拍
{if(Timer_GetCounter()<2500){IN1(1);IN2(0);IN3(0);IN4(0);delay_ms(10);}else if(Timer_GetCounter()>2500 && Timer_GetCounter()<5000){IN1(0);IN2(1);IN3(0);IN4(0);delay_ms(10);}else if(Timer_GetCounter()>5000 && Timer_GetCounter()<7500){IN1(0);IN2(0);IN3(1);IN4(0);delay_ms(10);}else if(Timer_GetCounter()>7500 && Timer_GetCounter()<10000){IN1(0);IN2(0);IN3(0);IN4(1);delay_ms(10);}
}void ZturndouControl_4(void)	//正双四拍
{if(Timer_GetCounter()<2500){IN1(0);IN2(1);IN3(1);IN4(0);delay_ms(10);}else if(Timer_GetCounter()>2500 && Timer_GetCounter()<5000){IN1(0);IN2(1);IN3(0);IN4(1);delay_ms(10);}else if(Timer_GetCounter()>5000 && Timer_GetCounter()<7500){IN1(1);IN2(0);IN3(0);IN4(1);delay_ms(10);}else if(Timer_GetCounter()>7500 && Timer_GetCounter()<10000){IN1(1);IN2(0);IN3(1);IN4(0);delay_ms(10);}
}void RturndouControl_4(void)	//反双四拍
{if(Timer_GetCounter()<2500){IN1(1);IN2(0);IN3(1);IN4(0);delay_ms(10);}else if(Timer_GetCounter()>2500 && Timer_GetCounter()<5000){IN1(1);IN2(0);IN3(0);IN4(1);delay_ms(10);}else if(Timer_GetCounter()>5000 && Timer_GetCounter()<7500){IN1(0);IN2(1);IN3(0);IN4(1);delay_ms(10);}else if(Timer_GetCounter()>7500 && Timer_GetCounter()<10000){IN1(0);IN2(1);IN3(1);IN4(0);delay_ms(10);}
}void ZturnControl_8(void)	//正八拍
{if(Timer_GetCounter()<1250){IN1(1);IN2(0);IN3(0);IN4(0);delay_ms(10);}else if(Timer_GetCounter()>1250 && Timer_GetCounter()<2500){IN1(1);IN2(0);IN3(1);IN4(0);delay_ms(10);}else if(Timer_GetCounter()>2500 && Timer_GetCounter()<3750){IN1(0);IN2(0);IN3(1);IN4(0);delay_ms(10);}else if(Timer_GetCounter()>3750 && Timer_GetCounter()<5000){IN1(0);IN2(1);IN3(1);IN4(0);delay_ms(10);}else if(Timer_GetCounter()>5000 && Timer_GetCounter()<6250){IN1(0);IN2(1);IN3(0);IN4(0);delay_ms(10);}else if(Timer_GetCounter()>6250 && Timer_GetCounter()<7500){IN1(0);IN2(1);IN3(0);IN4(1);delay_ms(10);}else if(Timer_GetCounter()>7500 && Timer_GetCounter()<8750){IN1(0);IN2(0);IN3(0);IN4(1);delay_ms(10);}else if(Timer_GetCounter()>8750 && Timer_GetCounter()<10000){IN1(1);IN2(0);IN3(0);IN4(1);delay_ms(10);}
}void RturnControl_8(void)	//反八拍
{if(Timer_GetCounter()<1250){IN1(1);IN2(0);IN3(0);IN4(1);delay_ms(10);}else if(Timer_GetCounter()>1250 && Timer_GetCounter()<2500){IN1(0);IN2(0);IN3(0);IN4(1);delay_ms(10);}else if(Timer_GetCounter()>2500 && Timer_GetCounter()<3750){IN1(0);IN2(1);IN3(0);IN4(1);delay_ms(10);}else if(Timer_GetCounter()>3750 && Timer_GetCounter()<5000){IN1(0);IN2(1);IN3(0);IN4(0);delay_ms(10);}else if(Timer_GetCounter()>5000 && Timer_GetCounter()<6250){IN1(0);IN2(1);IN3(1);IN4(0);delay_ms(10);}else if(Timer_GetCounter()>6250 && Timer_GetCounter()<7500){IN1(0);IN2(0);IN3(1);IN4(0);delay_ms(10);}else if(Timer_GetCounter()>7500 && Timer_GetCounter()<8750){IN1(1);IN2(0);IN3(1);IN4(0);delay_ms(10);}else if(Timer_GetCounter()>8750 && Timer_GetCounter()<10000){IN1(1);IN2(0);IN3(0);IN4(0);delay_ms(10);}
}

相关文章:

基于STM32F103控制L298N驱动两相四线步进电机

文章目录 前言一、模块参数二、接口说明三、准备工作四、直流电机驱动引脚接线效果展示 五、两相四线步进电机驱动步进电机相关概念拍数驱动时序引脚接线效果展示 六、参考示例 前言 L298N 是一种常见的双 H 桥电机驱动模块&#xff0c;广泛用于驱动直流电机和步进电机。它基于…...

Blazor开发中注册功能设计研究

Blazor开发中注册功能设计是为了用户可以高效、安全地完成注册并登录系统。以高效和用户友好为目标,结合校验、注册和登录功能,为用户提供一个完整的账户管理流程,同时保障系统安全性和稳定性。注册页面应该结构清晰、布局合理,既满足基本注册功能,又通过响应式设计与视觉…...

Docker安装体验kuboard-k8s多集群管理工具

文章目录 1.kuboard是什么&#xff1f;2.docker安装命令2.1 Linux上docker环境安装命令2.2 Windows上docker环境安装命令 3.登录访问3.1首页访问地址3.2 默认账号密码3.3 登录页3.4 首页 4总结 1.kuboard是什么&#xff1f; 参看官网: https://kuboard.cn/gitHub项目地址&…...

组建基于IPV6的网络

现在很多单位使用IPV6的网络&#xff0c;地址资源紧张的状况得到了缓解&#xff0c;很多单位目前采用双栈运行&#xff0c;就是网络设备上同时跑IPV4和IPV6。 IPV6的网络与IPV4网络的配置与IPV4基本相同&#xff0c;注意地址规则与格式的不同。 长度&#xff1a;     IPv6地…...

浙江肿瘤医院病理库存储及NAS共享存储(磁盘阵列)方案-Infortrend普安科技

Infortrend金牌代理-燊通智联信息科技发展&#xff08;上海&#xff09;有限公司与院方多轮沟通&#xff0c;详细讨论性能与容量要求&#xff0c;最终决定采用GSe统一存储设备&#xff0c;与现有病理系统服务器无缝对接&#xff0c;每台设备配1.92T SSD作缓存加速原数据读写&am…...

UE5在蓝图中使用VarestX插件访问API

在Fab中安装好VarestX免费插件 这个插件可以用来远程请求http和api等&#xff0c;返回json等格式内容 插件网址 https://www.fab.com/zh-cn/listings/d283e40c-4ee5-4e73-8110-cc7253cbeaab 虚幻里开启插件 然后网上随便搜个免费api测试一下&#xff0c;这里我找了个微博热搜…...

QML学习(五) 做出第一个简单的应用程序

通过前面四篇对QML已经有了基本的了解&#xff0c;今天先尝试做出第一个单页面的桌面应用程序。 1.首先打开Qt,创建项目&#xff0c;选择“QtQuick Application - Empty” 空工程。 2.设置项目名称和项目代码存储路径 3.这里要注意选择你的编译器类型&#xff0c;以及输出的程…...

Java日志框架:log4j、log4j2、logback

文章目录 配置文件相关1. properties测试 2. XMl使用Dom4j解析XML Log4j与Log4j2日志门面 一、Log4j1.1 Logges1.2 Appenders1.3 Layouts1.4 使用1.5 配置文件详解1.5.1 配置根目录1.5.2 配置日志信息输出目的地Appender1.5.3 输出格式设置 二、Log4j22.1 XML配置文件解析2.2 使…...

tcp 的重传,流量控制,拥塞控制

tcp 的重传解决了什么问题tcp的几种重传机制分别解决什么问题?方案 1: 超时重传方案2: 快速重传选择性确认(sack)d-sack(重复接收) 滑动窗口:累计应答 流量控制解决什么问题?如何做的?问题1: 那如果第一次发送的数据都大于缓冲区的大小怎么办?问题2: 如果剩余大小为0会发生…...

【多时段】含sop的配电网重构【含分布式电源】【已更新视频讲解】

1 主要内容 之前分享了很多配电网重构的程序&#xff0c;每个程序针对场景限定性比较大&#xff0c;程序初学者修改起来难度较大&#xff0c;本次分享一个基础程序&#xff0c;针对含sop的配电网重构模型&#xff0c;含风电和光伏&#xff0c;优化了33节点网络电压合理性&…...

angular管道传多个参数

比如有个时间管道 time.pipe.ts import { Pipe, PipeTransform } from angular/core;Pipe({ name: time }) export class TimePipe implements PipeTransform {transform(value: any,type: any,isTime: boolean,): string {// 具体逻辑不写了} }使用的时候对时间字段的处理只需…...

STM32高级 以太网通讯案例1:网络搭建(register代码)

需求描述 驱动W5500芯片&#xff0c;设置好IP&#xff0c;测试网络是否连通。 思考&#xff1a; 驱动W5500芯片是通过spi协议&#xff0c;所以和spi相关的有四个引脚&#xff0c;MOSI&#xff08;主出从入&#xff09;MISO&#xff08;主入从出&#xff09;SCK&#xff08;时…...

strncpy函数和使用案例

strncpy 是 C 语言标准库函数之一&#xff0c;用于字符串操作。它的功能是将源字符串&#xff08;source&#xff09;中的字符复制到目标字符串&#xff08;destination&#xff09;中&#xff0c;但最多复制 n 个字符。如果源字符串的长度小于 n&#xff0c;则目标字符串剩余的…...

Python调用Elasticsearch更新数据库

文章目录 Elasticsearch介绍Python调用Elasticsearch更新数据库 Elasticsearch介绍 Elasticsearch是一个基于Lucene的搜索引擎&#xff0c;它提供了一个分布式、多租户能力的全文搜索引擎&#xff0c;具有HTTP web接口和无模式的JSON文档。Elasticsearch是用Java开发的&#x…...

阿里云-将旧服务器数据与配置完全迁移至新服务器

文章目录 一&#xff1a;创建镜像二&#xff1a;将创建好的镜像复制到新服务器所在的目标地域&#xff08;如果新服务器与镜像在同一地域就不用进行这一操作&#xff09;三&#xff1a;将镜像配置到新服务器上四&#xff1a;导出安全组&#xff08;如果新服务器与旧服务器使用同…...

redis cluster实验详解

华子目录 实验环境准备部署redis cluster添加节点删除节点redis cluster集群维护 实验 环境准备 再开3台主机 先把之前3台源码编译的redis删除 [rootredis-node1 ~]# cd /usr/local/redis/ [rootredis-node1 redis]# make uninstall[rootredis-node2 ~]# cd /usr/local/redi…...

网络技术-QoS策略以及如何定义 流分类,流行为,流策略

一&#xff1a;QoS策略简介 QoS策略由如下部分组成&#xff1a; 类&#xff0c;定义了对报文进行识别的规则。 流行为&#xff0c;定义了一组针对类识别后的报文所做的QoS动作。 通过将类和流行为关联起来&#xff0c;QoS策略可对符合分类规则的报文执行流行为中定义的…...

【小程序】自定义组件的data、methods、properties

目录 自定义组件 - 数据、方法和属性 1. data 数据 2. methods 方法 3. properties 属性 4. data 和 properties 的区别 5. 使用 setData 修改 properties 的值 自定义组件 - 数据、方法和属性 1. data 数据 在小程序组件中&#xff0c;用于组件模板渲染的私有数据&…...

实验五 时序逻辑电路部件实验

一、实验目的 熟悉常用的时序逻辑电路功能部件&#xff0c;掌握计数器、了解寄存器的功能。 二、实验所用器件和仪表 1、双 D触发器 74LS74 2片 2、74LS162 1片 3、74194 1片 4、LH-D4实验仪 1台 1.双…...

时序论文34|AdaWaveNet:用于时间序列分析的自适应小波网络

论文标题&#xff1a;AdaWaveNet: Adaptive Wavelet Network for Time Series Analysis 论文链接&#xff1a;https://arxiv.org/abs/2405.11124 论文代码&#xff1a;https://github.com/comp-well-org/AdaWaveNet/ 前言 这篇文章面向非平稳时间序列进行分析与建模&#x…...

Maven怎么会出现一个dependency-reduced-pom.xml的文件

问题 今天打包时突然发现&#xff0c;多出了一个名为dependency-reduced-pom.xml的文件 解决方法 由于使用了maven-shade-plugin插件导致的&#xff0c;在 <plugin> 标签下添加 <configuration><createDependencyReducedPom>false</createDependencyR…...

Vue.js组件(6):echarts组件

1 前言 本章主要对常用的echars图表展示进行基本的组件封装。使用该组件前需要在项目中引入echarts。官网&#xff1a;Apache ECharts npm install echarts --save 2 图表组件 2.1 折线图组件 组件属性&#xff1a;chartId&#xff0c;指定图表挂载div的id&#xff0c;注意不…...

在低版本 CUDA 环境下安装高 CUDA 版本的 PyTorch 及 DGL

项目中&#xff0c;代码环境需要 PyTorch 1.12.0 以上版本&#xff0c;但服务器上的 CUDA 版本仅为 10.1&#xff0c;官方支持的 PyTorch 最高版本为 1.7.0。导致无法直接使用所需的 PyTorch 版本。而且&#xff0c;DGL 也需要 0.9.1 版本&#xff0c;而 CUDA 10.1 不支持该版本…...

【SpringMVC】REST 风格

REST&#xff08;Representational State Transfer&#xff0c;表现形式状态转换&#xff09;是一种访问网络资源的格式。传统的资源描述方式通常如下&#xff1a; http://localhost/user/getById?id1http://localhost/user/saveUser 而 REST 风格的描述则更简洁&#xff1a…...

windows C#-使用对象初始值设定项初始化对象

可以使用对象初始值设定项以声明方式初始化类型对象&#xff0c;而无需显式调用类型的构造函数。 以下示例演示如何将对象初始值设定项用于命名对象。 编译器通过首先访问无参数实例构造函数&#xff0c;然后处理成员初始化来处理对象初始值设定项。 因此&#xff0c;如果无参…...

【Sentinel】流控效果与热点参数限流

目录 1.流控效果 1.1.warm up 2.2.排队等待 1.3.总结 2.热点参数限流 2.1.全局参数限流 2.2.热点参数限流 2.3.案例 1.流控效果 在流控的高级选项中&#xff0c;还有一个流控效果选项&#xff1a; 流控效果是指请求达到流控阈值时应该采取的措施&#xff0c;包括三种&…...

安装与配置

《PHP Libxml》是一个在PHP中处理XML和HTML文档的重要库。它提供了丰富的API&#xff0c;支持DOM、SimpleXML和XMLReader等多种解析方式&#xff0c;广泛应用于各种编程语言和项目中。 安装与配置 安装: 在PHP中&#xff0c;libxml扩展通常是默认启用的。如果你需要手动安装&…...

optuna和 lightgbm

文章目录 optuna使用1.导入相关包2.定义模型可选参数3.定义训练代码和评估代码4.定义目标函数5.运行程序6.可视化7.超参数的重要性8.查看相关信息9.可视化的一个完整示例10.lightgbm实验 optuna使用 1.导入相关包 import torch import torch.nn as nn import torch.nn.functi…...

SpringAI人工智能开发框架006---SpringAI多模态接口_编程测试springai多模态接口支持

可以看到springai对多模态的支持. 同样去创建一个项目 也是跟之前的项目一样,修改版本1.0.0 这里 然后修改仓库地址,为springai的地址 然后开始写代码...

ONLYOFFICE 协作空间 3.0 新功能详解

ONLYOFFICE 协作空间 3.0 新功能详解 书接上文&#xff1a; ONLYOFFICE 协作空间 3.0 发布: 新增虚拟数据房间、用户类型、OAuth 2.0 等更新 简单的介绍了一下 ONLYOFFICE 协作空间 3.0 的新功能&#xff0c;今天我们详细介绍一下这些新功能。 关于 ONLYOFFICE 协作空间 O…...

湖南引力:低代码助力实现智慧养老管理系统

“低代码开发宛如一座神奇的桥梁&#xff0c;它以简洁高效的方式连接起创意与应用&#xff0c;降低了开发门槛&#xff0c;为企业和开发者带来前所未有的便捷与可能&#xff0c;开启了快速实现软件梦想的新征程。” ——王港&#xff0c;湖南引力科技有限公司 湖南引力科技有…...

React里使用lodash工具库

安装 使用命令 npm install lodash 页面引入 常见的引入方式 引入整个lodash对象&#xff1a; import _ from lodash按名称引入特定的函数&#xff1a; import { orderBy } from "lodash"; tips: 这两种引入方式都会引入整个lodash库&#xff0c; 体积大&#x…...

机器人C++开源库The Robotics Library (RL)使用手册(二)

由于RL库采用跨平台CMake源码,可以轻松在win、ubantu等平台部署、编译,win通常用VS编译器,为了便于使用、阅读,需要将CMake编译成VS工程。 1、准备三个工具:CMake、VS、QT 为了在Windows上编译RL和依赖项,您需要安装一个编译器(例如。,Visual Studio 2017)和跨平台构…...

Excel无法插入新单元格怎么办?有解决方法吗?

在使用Excel时&#xff0c;有时会遇到无法插入新单元格的困扰。这可能是由于多种原因导致的&#xff0c;比如单元格被保护、冻结窗格、合并单元格等。本文将详细介绍3种可能的解决方案&#xff0c;帮助你顺利插入新单元格。 一、消冻结窗格 冻结窗格功能有助于在滚动工作表时保…...

2024年-全球使用Delphi统计

Delphi是一款集成开发环境&#xff08;IDE&#xff09;&#xff0c;旨在支持开发者高效地构建桌面、移动、Web 以及控制台应用程序&#xff0c;特别适合追求速度与效率的快速应用开发&#xff08;RAD&#xff09;流程。 根据 theirstack.com 网站的数据&#xff0c;我们大致描…...

行为树详解(5)——事件驱动

【分析】 如果行为树的节点很多&#xff0c;那么会存在要经过很多节点才会走到动作节点的情况。显然&#xff0c;性能上不如状态机。 每帧都需要重新遍历一系列节点才会走到动作节点&#xff0c;而实际上很多条件节点在数帧内不会有变化&#xff0c;这是造成性能问题的重要原…...

为什么深度学习和神经网络要使用 GPU?

为什么深度学习和神经网络要使用 GPU&#xff1f; 本篇文章的目标是帮助初学者了解 CUDA 是什么&#xff0c;以及它如何与 PyTorch 配合使用&#xff0c;更重要的是&#xff0c;我们为何在神经网络编程中使用 GPU。 图形处理单元 (GPU) 要了解 CUDA&#xff0c;我们需要对图…...

Kinova在开源家庭服务机器人TidyBot++研究里大展身手

在科技日新月异的今天&#xff0c;机器人技术在家庭场景中的应用逐渐成为现实&#xff0c;改变着我们的生活方式。今天&#xff0c;我们将深入探讨一篇关于家用机器人研究的论文&#xff0c;剖析其中的创新成果&#xff0c; 论文引用链接&#xff1a;http://tidybot2.github.i…...

Elasticsearch检索之三:官方推荐方案search_after检索实现(golang)

Elasticsearch8.17.0在mac上的安装 Kibana8.17.0在mac上的安装 Elasticsearch检索方案之一&#xff1a;使用fromsize实现分页 快速掌握Elasticsearch检索之二&#xff1a;滚动查询(scrool)获取全量数据(golang) 1、search_after检索 在前面的文章介绍了fromsize的普通分页…...

Day1 微服务 单体架构、微服务架构、微服务拆分、服务远程调用、服务注册和发现Nacos、OpenFeign

目录 1.导入单体架构项目 1.1 安装mysql 1.2 后端 1.3 前端 2.微服务 2.1 单体架构 2.2 微服务 2.3 SpringCloud 3.微服务拆分 3.1 服务拆分原则 3.1.1 什么时候拆 3.1.2 怎么拆 3.2 拆分购物车、商品服务 3.2.1 商品服务 3.2.2 购物车服务 3.3 服务调用 3.3.1 RestTemplate 3.…...

shell编程7

声明 学习视频来自B站UP主 泷羽sec for循环与while循环 for 循环 例子 代码如下: for i in seq 1 100 do echo $i done或者 for i in $(seq 1 100) do echo $i done 反引号的作用 在 shell 脚本中&#xff0c;反引号用于命令替换。它会将反引号中的命令执行&#xff0c;…...

Spring Boot中幂等性的应用

在 Spring Boot 中&#xff0c;幂等性是实现分布式系统设计和接口调用的一个重要概念&#xff0c;尤其在高并发、分布式环境下&#xff0c;确保接口重复调用不会引发系统数据异常至关重要。 幂等性概念 幂等性&#xff08;Idempotence&#xff09;是指一次请求和重复多次请求…...

深度学习笔记(9)——神经网络和反向传播

神经网络和反向传播 神经网络架构&#xff1a; 更多的神经元,更大的模型容量,使用更强的正则化进行约束。 神经网络的分层计算 f W 2 m a x ( 0 , W 1 x b 1 ) b 2 fW_2max(0,W_1xb_1)b_2 fW2​max(0,W1​xb1​)b2​,其中max函数体现了非线性,如果想要加深网络的层次,必须…...

Oracle Database 23ai 中的DBMS_HCHECK

在 Oracle 23ai 中&#xff0c;DBMS_HCHECK 包允许我们检查数据库中已知的数据字典问题。 几年前&#xff0c;Oracle 发布了 hcheck.sql 脚本&#xff08;文档 ID 136697.1&#xff09;来检查数据库中已知的数据字典问题。 DBMS_HCHECK 包意味着我们不再需要下载 hcheck.sql…...

Docker部署neo4j

查询镜像版本 docker search neo4j 以上代码运行会报异常&#xff1a;Error response from daemon: Get https://index.docker.io/v1/search?qneo4j&n25: read tcp 192.168.xxx.xxx:41734->xx.xxx.xx.xxx:443: read: connection reset by peer 这个提示无法访问&…...

大数据技术-Hadoop(二)HDFS的介绍与使用

目录 1、HDFS简介 1.1 什么是HDFS 1.2 HDFS的优点 1.3、HDFS的架构 1.3.1、 NameNode 1.3.2、 NameNode的职责 1.3.3、DataNode 1.3.4、 DataNode的职责 1.3.5、Secondary NameNode 1.3.6、Secondary NameNode的职责 2、HDFS的工作原理 2.1、文件存储 2.2 、数据写…...

datax与sqoop的优缺点?

DataX 的优缺点 优点 多种数据源支持&#xff1a;DataX 是一个开源的数据同步工具&#xff0c;它支持多种数据源之间的数据传输&#xff0c;包括关系型数据库&#xff08;如 MySQL、Oracle、SQL Server 等&#xff09;、非关系型数据库&#xff08;如 HBase、Hive、Elasticsear…...

如何学习、使用Ai,才能跟上时代的步伐?

目录 1. 打好基础&#xff1a;理解AI的核心概念 2. 学习AI的核心领域 3. 实践&#xff1a;动手做项目&#xff0c;积累经验 4. 利用AI工具提升工作效率 5. 培养AI思维与批判性思维 6. 关注AI领域的最新研究与趋势 7. 培养跨学科能力 总结&#xff1a; 在AI时代&#xf…...

强化特种作业管理,筑牢安全生产防线

在各类生产经营活动中&#xff0c;特种作业由于其操作的特殊性和高风险性&#xff0c;一直是安全生产管理的重点领域。有效的特种作业管理体系涵盖多个关键方面&#xff0c;从作业人员的资质把控到安全设施的配备维护&#xff0c;再到特种设备的精细管理以及作业流程的严格规范…...

nuxt3中使用element-plus(集成element-plus)

一、安装依赖 pnpm i element-plus --savepnpm i element-plus/icons-vuepnpm i element-plus/nuxt -D二、配置nuxt.config.ts export default defineNuxtConfig({ssr: true,devtools: { enabled: true },typescript: {shim: false,},modules: [element-plus/nuxt],css: [ele…...