- 博客(28)
- 收藏
- 关注
原创 C#控制台输入(Read()、ReadKey()和ReadLine())
摘要: C# 提供三种控制台输入方法: Console.Read():读取单个字符的ASCII码(需回车),会捕获\r\n,返回int类型。 Console.ReadKey():即时读取任意按键(无需回车),返回ConsoleKeyInfo,支持功能键检测。 Console.ReadLine():读取整行文本(需回车),自动去除\r\n,返回string类型。 适用场景: 单字符输入(如菜单选择)→ ReadKey() 整行文本输入(如用户名)→ ReadLine() 低级字符处理→ Read()
2025-08-15 21:11:07
653
原创 普通字符串(使用转义字符) 和 逐字字符串(verbatim string literal,使用 @ 符号)
C# 提供两种字符串字面量:普通字符串(使用转义字符)和逐字字符串(以 @ 开头)。普通字符串支持 \n、\t 等转义序列,但需对 \ 和 " 进行转义,适合简单文本。逐字字符串原样保留所有字符(除双引号需写为 ""),特别适合文件路径、SQL、JSON等多行文本,可读性更高。C# 11+ 还引入了原始字符串字面量,可更优雅处理多行文本。选择时,路径推荐用逐字字符串,带转义字符的文本宜用普通字符串,复杂多行文本可考虑C#11新特性。
2025-08-14 10:46:47
664
原创 机器人运动学中的Actuator space, Joint space 和 Cartesian space
机器人学中,执行器空间、关节空间和笛卡尔空间是控制机械系统的三个关键概念。执行器空间直接关联硬件参数(如电机位置),用于底层控制;关节空间描述各关节状态,便于路径规划;笛卡尔空间直观表示末端执行器的位姿,适合任务目标设定。三者通过正向/逆向运动学相互转换:执行器空间需映射至关节空间,关节空间与笛卡尔空间可双向转换。理解这些空间及其关系对机器人系统设计和精确控制至关重要。
2025-08-13 10:57:22
346
原创 Denavit-Hartenberg (D-H) 参数法 中对连杆参数 a (link length) 的理解
摘要: 在 Denavit-Hartenberg (D-H) 参数法 中,连杆参数 a 表示两个相邻关节轴(zᵢ 和 zᵢ₊₁)沿 xᵢ 方向的公垂线距离。当两个 z 轴 共线 或 垂直相交 时,它们的最短距离为 0,因此 a = 0。若两轴 平行但偏移 或 异面,则 a > 0。核心思想是:a 反映两轴间的横向偏移,共线或相交时无偏移,故 a 为零。
2025-08-13 10:42:50
289
原创 旋转关节 (Revolute Joint) 和棱柱关节 (Prismatic Joint)
特性旋转关节 (Revolute Joint)棱柱关节 (Prismatic Joint)运动类型旋转 (Rotation)平移 (Translation)关节变量θ (角度)d (距离)自由度1 个旋转自由度1 个平移自由度常见应用肩、肘、腕关节伸缩臂、线性执行器大多数工业机械臂(如 SCARA、六轴机器人)主要由旋转关节组成,因为它们能提供较大的工作空间和灵活性。而一些特定应用(如笛卡尔坐标机器人、某些并联机器人)会使用棱柱关节来实现精确的直线运动。
2025-08-13 10:22:24
226
原创 Rotation Matrix与转角 小結
欧拉角与固定角:三维旋转的12种表示方法 欧拉角(Euler angles)和固定角(Fixed angles)是描述三维旋转的两种方式。欧拉角绕物体自身坐标系(动轴)连续旋转三次,如Z-Y'-Z'';固定角则绕固定世界坐标系旋转三次,如Z-Y-X。由于三维旋转需避免连续绕同一轴,经过组合计算(3×2×2)可得12种有效的旋转序列。 关键对偶性在于:每个欧拉角序列(如Z-Y'-X'')对应一个反向顺序的固定角序列(X-Y-Z)。这种关系使得12种旋转序列可分别解释为欧拉角或固定角,而非24种独立表示。
2025-08-12 10:31:59
833
原创 行列式(Determinant)的几何意义
1保持定向,-1反转定向。|det| = 1,所以 det 只能是±1。旋转 = 保定向的正交变换 → det = +1。反射(或含反射的变换)= 反转定向的正交变换 → det = -1。因此,通过计算一个3x3正交矩阵的行列式,我们可以立即判断它代表的是纯旋转(det=+1)还是包含反射的操作(det=-1)。这是区分这两种基本几何变换的最直接、最可靠的代数方法。
2025-08-11 21:40:26
841
原创 Zotero修改英文文献的“等”为“et al”的解决方法
直接到zotero中文社区,下载大佬已经修改好的模板,里面有很多大学的参考CSL 样式。
2025-02-18 17:05:00
690
原创 C++运算符重载中,+=的返回类型为什么不可以是void?
如果operator+=返回void,上面的最后一行代码将会产生编译错误,因为你不能对一个void类型的表达式应用+=运算符。此外,这样做也违背了用户的预期,因为对于内置类型来说,复合赋值运算符确实会返回一个左值,即一个可以再次用于赋值或其他操作的对象。对于复合赋值运算符(如+=),通常它们的语义是修改左侧的操作数并返回一个引用给被修改的对象。因此,为了保持一致性、可预测性和功能完整性,复合赋值运算符应当返回一个指向修改后的对象的引用(通常是*this)。
2024-12-20 15:24:36
232
原创 PCF8591基础知识(AD/DA芯片)
PCF8591在板子上对应的是u16芯片。该芯片有4个ADC输入管脚,分别是AIN0~AIN3。AIN0对应的在排针J3上,AIN1对应的是光敏电阻与固定电阻R31的分压数值,AIN2不怎么考,AIN3对应的是旋转电位计的电压值。器件地址:1001 000(R/W非)表示51单片机从PCF8591读数据;表示51单片机向PCF8591写数据;另外,光敏电阻的阻值变化,光线越强,阻值越低;光线越暗,组织越高。对应的电压值,光线越暗,AIN1的电压越低。光线越强,阻值越高。
2024-04-05 11:42:33
664
1
原创 NE555
方波信号发生电路,频率大小可以通过Rb3可调电位器改变,信号输出在J3排针的Signal引脚;NE555仅作方波信号发生,无需单片机对其进行配置,所以考察的是单片机的定时器/计数器应用。通过跳线帽,可以将signal接到单片机的p34引脚;单片机的p34引脚,为定时器/计数器T0的引脚;
2024-04-03 22:32:20
224
1
原创 PWM脉宽调制
3、之前课程高电平是P34=1;对LED控制,可以用字节赋值,即led_ctrl=0xff;2、占空比可以调节led灯的亮度。由于led灯是共阳极接法,所以占空比越高,亮度越暗;1、LED调光的频率最好为1Khz,太小的频率会造成灯的闪烁;占空比:高电平所占周期的时间。
2024-03-31 19:35:51
851
1
原创 超声波测距
声速v=340m/s,得距离D=v*T/2=v*170(m) (D的单位是m,T的单位是s)2、当CX20106A接收到40kHz的方波时,会在第七管脚产生一个低电平,即P11可以读取到低电平。1、编程实现P10输出40Hz的方波;2、P10产生40kHz方波,并开始计时(定时器1);4、关闭定时器,并根据TH1和TL1的值,计算距离。3、P11读取到低电平,结束计时,得到时间T;启动定时器1以后,每过1us,计数器值+1;1、P10管脚产生40kHz的方波;3、等待P11接收到低电平;
2024-03-29 16:41:12
419
1
原创 IIC协议
与单总线协议不同,IIC协议有两根线,一根是时钟线,另一根是数据线。SCL----Serial Clock 串行的时钟线。SDA----Serial Data 串行的数据线。--AT24C02 EEPROM芯片。--PCF8591 AD/DA芯片。
2024-03-06 09:08:38
164
1
原创 DS18B20
2.初始化→跳过ROM(0xcc)→读取暂存器→运用两次Read_DS18B20()下面是老师写的,返回值的话,如果需要是小数的形式,就定义为float变量。1.初始化→跳过ROM(0xcc)→转化温度(0x44);DS18B20读取温度的步骤。
2024-03-02 20:05:42
403
原创 矩阵键盘知识
如图所示,当最下角跳帽的1、2连接时,对应的是矩阵键盘。对赋值0,检测低4位哪一位是0,确定按键所在;对赋值0,检测高4位哪一位是0,确定按键所在;根据所得行和列,确定按键所在位置。
2024-02-29 09:33:30
736
原创 独立按键BTN
独立按键位于整个矩阵键盘的最左侧,4、5、6、7.左下角,跳帽选择2、3,选择的是独立按键,起作用。按下对应按键之后,分别和地相连,置0.两个管脚同时和串口服务,用于串口通信以及给单片机下载程序用。通常按键所用的开关都是机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上就稳定的接通,在断开时也不会一下子彻底断开,而是在闭合和断开的瞬间伴随了一连串的抖动,如图所示。
2024-02-26 20:34:46
1633
1
原创 发光二极管LED
1、p2=0x80时,Y4C=1,使能端LE=1,有效,打开锁存器74HC573;2、二极管是共阳极接法,所以当锁存器使能端有效,且p0输出为低电平时,对应的二极管才亮。
2024-02-17 20:08:42
294
1
原创 数码管相关
共阳极数码管码表STC_ISP里有关于七段数码管的段赋值,不过是共阴极接法。但是板子上是共阳极接法,所以需要按位取反(~)。https://img-home.csdnimg.cn/images/20231127111739.png
2024-02-03 11:45:28
330
1
原创 蜂鸣器与继电器
4.⭐为什么要用这么多芯片?1.单片机I0的驱动能力有限,不足以驱动蜂鸣器、继电器中的线圈。故需要专门的驱动芯片以增加驱动能力;(驱动芯片ULN2003——反相、取非)2.板子上外设多,包括LED、数码管、蜂鸣器、继电器,1O数量不够所以需要通过“译码器-锁存器”结构,让数据控制口P0(p07~p00)分时控制外设。(译码器74HC138、锁存器74HC573、或非门74HC02)
2024-01-27 15:52:55
1398
原创 单片机入门编程
sfr (special funcion register)特殊功能寄存器,是用来对片内各功能模块进行管理、控制、监视的控制寄存器和状态寄存器,是一个特殊功能的RAM(数据存储空间,random memoray)区。开机关机会丢掉,不像Flash。⭐SFR范围:80H~FFH。
2024-01-26 10:18:45
229
1
原创 51单片机的数据类型和范围
⭐sizeof是一个关键字,他是一个编译时的运算符,用于判断变量或数据长度的字节大小。unsigned int 0~65535(FFFF) 占用两个字节。unsigned long 0~0xFFFF FFFF,占用4个字节。unsigned char 0~255 (FF)占用一个字节。//字节寻址,对寄存器进行一个字节的赋值。char -128~127 占用一个字节。不同单片机的数据类型和范围是不同的。double 占用4个字节。float 占用4个字节。long 占用4个字节。
2024-01-24 19:17:40
1803
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人