伪黄金右路

b7与gary的组合之前看来还是可以的,而#15两场以来疯狂助攻,cross数目远超b7,成功率堪称中超水平
对瑞典的下半场一切现原形,b7被打得很窝囊,#15直接给了瑞典人无穷的信心,红毛干脆转战左路大家一起来轰这条舒畅地带
怎么club和national表现可以差别这么大

现在看来,换上gary也只是可能攻得稍微像样一些,防的话照样没戏
但两位元老对wc说farewell,一定不会有所保留

owen可惜了
CAD中采用lisp开发,定义命令为TF,批量选择文件夹内扩展名为tf和ctr的两种文件,如果是字母编号,以ABCD字母顺充排序,依次绘制各扩展名为TF数据中的zzb,yzb数据,每个tf数据中的Y坐标加1000,相当于每个土方数据Y坐标+1000上下位次排列隔开,从第三行开始读取数据,将n1,n2,n3,n4,n5,n6……,依次从左到依次循环赋值,将n16-n6赋值给zgc,将zzb的坐标设置为点坐标(n1 zgc),向下依次循环所有zgc坐标点添加到点集;n17-n7的数值赋值给ygc,将yzb的坐标设置为(n1,ygc),向下依次循环所有yc坐标点添加到点集;在cad中绘制多段线ygc点集,右高程zzb的点集Y坐标统一加1000,在CAD中画出点集zzb和yzb两条多段线,绘制多段线完成后,前面两行数据不读取,从第三行开始,搜索TF的同名文件的CTR文件(无同名文件时,搜索首字或字母/字符相同的CTR文件),从QHSJ.DAT下一行开始,将n1,n2,n3,n4,n5,n6……,依次从左到依次循环赋值,循环到HDSJ.DAT结束,将n1赋值给qwzbq,将n2赋值给qwzbz,qlmc设置为n4,以(qwzbq 水平基线Y坐标(是指各个互通的水平基本线0 1000 2000 3000))和(qwzbz 水平基线Y坐标)为底边,绘制一个高为100的矩形,在矩形正中间写上文字qlmc;向下依次循环绘制出矩形和qlmc,将图层设置为对应文件名+桥梁,颜色为4;均无同名文件,则只绘制水平基线和高差线,跳过绘制桥梁步骤,绘制下一个,TF土方格式如下: HINTCAD6.00_TF_SHUJU //[ 桩 号 ] [挖方面积] [填方面积] [中桩填挖] [路基左宽] [路基右宽] [基缘左高] [基缘右高] [左坡脚距] [右坡脚距] [左坡脚高] [右坡脚高] [左沟缘距] [右沟缘距][左护坡道宽][右护坡道宽][左沟底高][右沟底高] [左沟心距] [右沟心距] [左沟深度] [右沟深度] [左用地宽] [右用地宽] [清表面积] [顶超面积] [左超面积] [右超面积] [计排水沟][左沟面积填][左沟面积挖][右沟面积填][右沟面积挖][路槽面积填][路槽面积挖][清表宽度][清表厚度][挖1类面积][挖2类面积][挖3类面积][挖4类面积][挖5类面积][挖6类面积][左路槽B] [右路槽B] [左路槽C] [右路槽C] [左垫层] [右垫层] [左路床] [右路床][左土肩培土][右土肩培土][左包边土] [右包边土][左边沟回填][右边沟回填][左截沟填][左截沟挖][右截沟填][右截沟挖][挖台阶面积][填1类面积][填2类面积][填3类面积][填4类面积][填5类面积][填6类面积][弃1类面积][弃2类面积][弃3类面积][弃4类面积][弃5类面积][弃6类面积] 0.000 2.547 0.009 0.000 -2.750 2.750 29.273 29.341 -4.310 2.763 29.393 29.332 -2.750 2.763 0.000 0.000 0.000 0.000 -0.000 0.000 -0.000 0.000 -7.310 5.763 0.000 0.000 0.000 0.000 1 0.000 0.000 0.000 0.000 -0.019 2.218 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 "" 20.000 2.477 0.022 -0.007 -2.750 2.750 29.764 29.831 -4.293 2.807 29.850 29.793 -2.750 2.807 0.000 0.000 0.000 0.000 -0.000 0.000 -0.000 0.000 -7.293 5.807 0.000 0.000 0.000 0.000 1 0.000 0.000 0.000 0.000 -0.040 2.216 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 "" 40.000 2.526 0.078 -0.037 2.750 -2.750 29.661 29.729 3.004 -4.313 29.492 29.854 3.004 -2.750 0.000 0.000 0.000 0.000 0.000 -0.000 0.000 -0.000 6.004 -7.313 0.000 0.000 0.000 0.000 1 0.000 0.000 0.000 0.000 -0.052 2.198 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 "" 60.000 3.558 0.000 -0.009 -2.750 -2.750 28.892 28.959 -2.963 -4.570 28.892 29.600 -2.750 -2.750 0.000 0.000 0.000 0.000 -0.000 -0.000 -0.000 -0.000 -5.963 -7.570 0.000 0.000 0.000 0.000 1 0.000 0.000 0.000 0.000 0.000 2.268 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 "" ctr文件格式如下: QHSJ.DAT 726.000 765.000 745.500 上跨乡道中桥 3*13m PC低高度密肋式T梁/0° 90.0000 0.0000 0 1 0 812.000 892.000 852.000 石塘河中桥 4*20m PC低高度密肋式T梁/-20° 110.0000 0.0000 0 1 0 2684.500 2764.500 2724.500 马桥河中桥 4*20m PC低高度密肋式T梁/0° 90.0000 0.0000 0 1 0 3953.000 4013.000 3983.000 上跨乡道中桥 3*20m PC低高度密肋式T梁/40° 50.0000 0.0000 0 1 0 4350.500 4389.500 4370.000 上跨四合路1号中桥 3*13m PC低高度密肋式T梁/0° 90.0000 0.0000 0 1 0 5482.000 5521.000 5501.500 上跨四合路2号中桥 3*13m PC低高度密肋式T梁/10° 80.0000 0.0000 0 1 0 HDSJ.DAT
05-20
#include <Arduino.h> //—— 阈值定义(模拟循迹,黑线追踪) —— // 白底约 30,黑线约 725,取两者中点 ≈ (30 + 725) / 2 = 377.5 // 因此设置阈值为 378 const int LINE_THRESHOLD = 378; //—— 电机驱动引脚 —— const uint8_t IN1 = 7; // 左电机方向 A → D4 const uint8_t IN2 = 8; // 左电机方向 B → D7 const uint8_t ENA = 5; // 左电机使能 (PWM) → D5 const uint8_t IN3 = 9; // 右电机方向 A → D8 const uint8_t IN4 = 10; // 右电机方向 B → D9 const uint8_t ENB = 6; // 右电机使能 (PWM) → D10 //—— 两路模拟循迹传感器 —— const uint8_t S_LEFT = A2; // 左路模拟 OUT → A0 const uint8_t S_RIGHT = A0; // 右路模拟 OUT → A1 const uint8_t S_LEFTOUT = A1; const uint8_t S_RIGHTOUT = A3; //—— 电机速度 (PWM 占空比 0–255) —— // 之前测试 80 较合适,这里保持 80 const uint8_t MOTOR_SPEED = 130; void setup() { Serial.begin(9600); Serial.println(F("=== 纯黑线追踪 小车启动 ===")); Serial.print(F("LINE_THRESHOLD = ")); Serial.println(LINE_THRESHOLD); //—— 初始化 电机 驱动引脚 —— pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(ENA, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); pinMode(ENB, OUTPUT); stopMotors(); // 上电先停止 //—— 初始化 循迹 传感器 引脚 —— pinMode(S_LEFT, INPUT); pinMode(S_RIGHT, INPUT); } void loop() { lineFollow(); } //—— 两路“黑线”循迹 逻辑 —— void lineFollow() { int leftVal = analogRead(S_LEFT); int rightVal = analogRead(S_RIGHT); int leftValOUT = analogRead(S_LEFTOUT); int rightValOUT = analogRead(S_RIGHTOUT); // 黑线时模拟值较高 (> LINE_THRESHOLD) bool onBlackLeft = (1000-leftVal > LINE_THRESHOLD); bool onBlackRight = (1000-rightVal > LINE_THRESHOLD); bool onBlackLeftOUT = (1000-leftValOUT > LINE_THRESHOLD); bool onBlackRightOUT = (1000-rightValOUT > LINE_THRESHOLD); // 串口调试输出原始数值和布尔状态 Serial.print(F("L_raw=")); Serial.print(leftVal); Serial.print(F(" R_raw=")); Serial.print(rightVal); Serial.print(F(" onBlack L=")); Serial.print(onBlackLeft); Serial.print(F(" R=")); Serial.println(onBlackRight); if (onBlackLeftOUT||onBlackRightOUT) { stopMotors(); return; } if (onBlackLeft && onBlackRight) { // 左右都在黑线 → 直行 moveForward(); } else if (onBlackLeft && !onBlackRight) { // 仅左侧在黑线 → 偏右 → 原地右转 turnRight(); } else if (onBlackRight && !onBlackLeft) { // 仅右侧在黑线 → 偏左 → 原地左转 turnLeft(); } else { // 均不在黑线(白底或脱离) → 停止 stopMotors(); } delay(50); // 去抖动 } //—— 电机控制 函数 —— void moveForward() { // 左轮正转 digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); analogWrite(ENA, MOTOR_SPEED-10); // 右轮正转 digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); analogWrite(ENB, MOTOR_SPEED); } void turnLeft() { // 原地左转:左轮停、右轮正转 digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); analogWrite(ENA, 0); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); analogWrite(ENB, MOTOR_SPEED-20); } void turnRight() { // 原地右转:左轮正转、右轮停 digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); analogWrite(ENA, MOTOR_SPEED-50); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW); analogWrite(ENB, 0); } void stopMotors() { // 左轮停 digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); analogWrite(ENA, 0); // 右轮停 digitalWrite(IN3, LOW); digitalWrite(IN4, LOW); analogWrite(ENB, 0); } 在这段代码的基础上加入pid控制转速,并且能做到。停止,然后维持一段时间再继续运行
06-19
#include "motor.h" #include "stm32f10x.h" void PWM_Init(void){ //初始化GPIO口 PA6 PA7 用于产生PWM信号 //结构定义 GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; TIM_OCInitTypeDef TIM_OCInitStructure; //开启TIM3和GPIOA的时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //复用推挽输出模式因为复用了TIM3外设 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIO A6 A7 //配置时基单元参数 //TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;//定时器不分频 TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数模式 TIM_TimeBaseInitStructure.TIM_Period = 500;//ARR自动重装值 TIM_TimeBaseInitStructure.TIM_Prescaler = 7199;//PSC预分频值 TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStructure);//初始化单元 //输出比较结构体配置 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;//选择PWM模式1 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//输出比较极性选择 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//输出使能 TIM_OC1Init(TIM3, &TIM_OCInitStructure);//初始化 TIM3 OC1 TIM_OC2Init(TIM3, &TIM_OCInitStructure);//初始化 TIM3 OC2 TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable);//使能CCR1自动重装 TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable);//使能CCR2自动重装 TIM_Cmd(TIM3, ENABLE);//开启定时器3 } void Motor_GPIO_Init(void){ //开启电机驱动口的四个GPIO RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 |GPIO_Pin_7 | GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); //电机1 GPIO_InitStructure.GPIO_Pin = Motor1_GPIO_PIN; GPIO_Init(Motor1_GPIO_PORT, &GPIO_InitStructure); //电机2 GPIO_InitStructure.GPIO_Pin = Motor2_GPIO_PIN; GPIO_Init(Motor2_GPIO_PORT, &GPIO_InitStructure); } //设置右路电机速度 PWM void MotorR_SetSpeed(int Speed) { if (Speed >= 0)//Speed值为正 { Motor1_FWD; //GPIO_SetBits(GPIOB, GPIO_Pin_7);GPIO_ResetBits(GPIOB, GPIO_Pin_6); TIM_SetCompare1(TIM3,Speed);//设置Speed转速 } else//Speed值为负 { Motor1_REV; //GPIO_SetBits(GPIOB, GPIO_Pin_6);GPIO_ResetBits(GPIOB, GPIO_Pin_7); TIM_SetCompare1(TIM3,-Speed);//设为-Speed转速 } } //设置左路电机PWM 速度 void MotorL_SetSpeed(int Speed) { if (Speed >= 0) { Motor2_FWD; //GPIO_SetBits(GPIOB, GPIO_Pin_9);GPIO_ResetBits(GPIOB, GPIO_Pin_3); TIM_SetCompare2(TIM3,Speed); } else { Motor2_REV; //GPIO_SetBits(GPIOB, GPIO_Pin_3);GPIO_ResetBits(GPIOB, GPIO_Pin_9); TIM_SetCompare2(TIM3,-Speed); } } //刹车 void Car_Brake(void){ MotorR_SetSpeed(0); MotorL_SetSpeed(0); } //右转 void Car_Right(void){ MotorR_SetSpeed(-50); MotorL_SetSpeed(50); } //左转 void Car_Left(void){ MotorR_SetSpeed(50); MotorL_SetSpeed(-50); } //后退 void Car_Back(void){ MotorR_SetSpeed(-200); MotorL_SetSpeed(-200); } //前进 void Car_Forward(void){ MotorR_SetSpeed(200); MotorL_SetSpeed(200); }这个代码是否存在上述问题
07-02
基于51单片机,实现对直流电机的调速、测速以及正反转控制。项目包含完整的仿真文件、源程序、原理图和PCB设计文件,适合学习和实践51单片机在电机控制方面的应用。 功能特点 调速控制:通过按键调整PWM占空比,实现电机的速度调节。 测速功能:采用霍尔传感器非接触式测速,实时显示电机转速。 正反转控制:通过按键切换电机的正转和反转状态。 LCD显示:使用LCD1602液晶显示屏,显示当前的转速和PWM占空比。 硬件组成 主控制器:STC89C51/52单片机(与AT89S51/52、AT89C51/52通用)。 测速传感器:霍尔传感器,用于非接触式测速。 显示模块:LCD1602液晶显示屏,显示转速和占空比。 电机驱动:采用双H桥电路,控制电机的正反转和调速。 软件设计 编程语言:C语言。 开发环境:Keil uVision。 仿真工具:Proteus。 使用说明 液晶屏显示: 第一行显示电机转速(单位:转/分)。 第二行显示PWM占空比(0~100%)。 按键功能: 1键:加速键,短按占空比加1,长按连续加。 2键:减速键,短按占空比减1,长按连续减。 3键:反转切换键,按下后电机反转。 4键:正转切换键,按下后电机正转。 5键:开始暂停键,按一下开始,再按一下暂停。 注意事项 磁铁和霍尔元件的距离应保持在2mm左右,过近可能会在电机转动时碰到霍尔元件,过远则可能导致霍尔元件无法检测到磁铁。 资源文件 仿真文件:Proteus仿真文件,用于模拟电机控制系统的运行。 源程序:Keil uVision项目文件,包含完整的C语言源代码。 原理图:电路设计原理图,详细展示了各模块的连接方式。 PCB设计:PCB布局文件,可用于实际电路板的制作。
【四旋翼无人机】具备螺旋桨倾斜机构的全驱动四旋翼无人机:建模与控制研究(Matlab代码、Simulink仿真实现)内容概要:本文围绕具备螺旋桨倾斜机构的全驱动四旋翼无人机展开研究,重点进行了系统建模与控制策略的设计与仿真验证。通过引入螺旋桨倾斜机构,该无人机能够实现全向力矢量控制,从而具备更强的姿态调节能力和六自由度全驱动特性,克服传统四旋翼欠驱动限制。研究内容涵盖动力学建模、控制系统设计(如PID、MPC等)、Matlab/Simulink环境下的仿真验证,并可能涉及轨迹跟踪、抗干扰能力及稳定性分析,旨在提升无人机在复杂环境下的机动性与控制精度。; 适合人群:具备一定控制理论基础和Matlab/Simulink仿真能力的研究生、科研人员及从事无人机系统开发的工程师,尤其适合研究先进无人机控制算法的技术人员。; 使用场景及目标:①深入理解全驱动四旋翼无人机的动力学建模方法;②掌握基于Matlab/Simulink的无人机控制系统设计与仿真流程;③复现硕士论文级别的研究成果,为科研项目或学术论文提供技术支持与参考。; 阅读建议:建议结合提供的Matlab代码与Simulink模型进行实践操作,重点关注建模推导过程与控制器参数调优,同时可扩展研究不同控制算法的性能对比,以深化对全驱动系统控制机制的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值