汉诺塔!!! Simulate the movement of the Towers of Hanoi puzzle Bonus is possible for using animation eg. if n = 2 A→B A→C B→C if n = 3 A→C A→B C→B A→C B→A B→C A→C
标签: the animation Simulate movement
上传时间: 2017-02-11
上传用户:waizhang
将魔王的语言抽象为人类的语言:魔王语言由以下两种规则由人的语言逐步抽象上去的:α-〉β1β2β3…βm ;θδ1δ2…-〉θδnθδn-1…θδ1 设大写字母表示魔王的语言,小写字母表示人的语言B-〉tAdA,A-〉sae,eg:B(ehnxgz)B解释为tsaedsaeezegexenehetsaedsae对应的话是:“天上一只鹅地上一只鹅鹅追鹅赶鹅下鹅蛋鹅恨鹅天上一只鹅地上一只鹅”。(t-天d-地s-上a-一只e-鹅z-追g-赶x-下n-蛋h-恨)
上传时间: 2013-12-19
上传用户:aix008
本代码为编码开关代码,编码开关也就是数字音响中的 360度旋转的数字音量以及显示器上用的(单键飞梭开 关)等类似鼠标滚轮的手动计数输入设备。 我使用的编码开关为5个引脚的,其中2个引脚为按下 转轮开关(也就相当于鼠标中键)。另外3个引脚用来 检测旋转方向以及旋转步数的检测端。引脚分别为a,b,c b接地a,c分别接到P2.0和P2.1口并分别接两个10K上拉 电阻,并且a,c需要分别对地接一个104的电容,否则 因为编码开关的触点抖动会引起轻微误动作。本程序不 使用定时器,不占用中断,不使用延时代码,并对每个 细分步数进行判断,避免一切误动作,性能超级稳定。 我使用的编码器是APLS的EC11B可以参照附件的时序图 编码器控制流水灯最能说明问题,下面是以一段流水 灯来演示。
上传时间: 2017-07-03
上传用户:gaojiao1999
【问题描述】 在一个N*N的点阵中,如N=4,你现在站在(1,1),出口在(4,4)。你可以通过上、下、左、右四种移动方法,在迷宫内行走,但是同一个位置不可以访问两次,亦不可以越界。表格最上面的一行加黑数字A[1..4]分别表示迷宫第I列中需要访问并仅可以访问的格子数。右边一行加下划线数字B[1..4]则表示迷宫第I行需要访问并仅可以访问的格子数。如图中带括号红色数字就是一条符合条件的路线。 给定N,A[1..N] B[1..N]。输出一条符合条件的路线,若无解,输出NO ANSWER。(使用U,D,L,R分别表示上、下、左、右。) 2 2 1 2 (4,4) 1 (2,3) (3,3) (4,3) 3 (1,2) (2,2) 2 (1,1) 1 【输入格式】 第一行是数m (n < 6 )。第二行有n个数,表示a[1]..a[n]。第三行有n个数,表示b[1]..b[n]。 【输出格式】 仅有一行。若有解则输出一条可行路线,否则输出“NO ANSWER”。
标签: 点阵
上传时间: 2014-06-21
上传用户:llandlu
实验源代码 //Warshall.cpp #include<stdio.h> void warshall(int k,int n) { int i , j, t; int temp[20][20]; for(int a=0;a<k;a++) { printf("请输入矩阵第%d 行元素:",a); for(int b=0;b<n;b++) { scanf ("%d",&temp[a][b]); } } for(i=0;i<k;i++){ for( j=0;j<k;j++){ if(temp[ j][i]==1) { for(t=0;t<n;t++) { temp[ j][t]=temp[i][t]||temp[ j][t]; } } } } printf("可传递闭包关系矩阵是:\n"); for(i=0;i<k;i++) { for( j=0;j<n;j++) { printf("%d", temp[i][ j]); } printf("\n"); } } void main() { printf("利用 Warshall 算法求二元关系的可传递闭包\n"); void warshall(int,int); int k , n; printf("请输入矩阵的行数 i: "); scanf("%d",&k); 四川大学实验报告 printf("请输入矩阵的列数 j: "); scanf("%d",&n); warshall(k,n); }
上传时间: 2016-06-27
上传用户:梁雪文以
#include "iostream" using namespace std; class Matrix { private: double** A; //矩阵A double *b; //向量b public: int size; Matrix(int ); ~Matrix(); friend double* Dooli(Matrix& ); void Input(); void Disp(); }; Matrix::Matrix(int x) { size=x; //为向量b分配空间并初始化为0 b=new double [x]; for(int j=0;j<x;j++) b[j]=0; //为向量A分配空间并初始化为0 A=new double* [x]; for(int i=0;i<x;i++) A[i]=new double [x]; for(int m=0;m<x;m++) for(int n=0;n<x;n++) A[m][n]=0; } Matrix::~Matrix() { cout<<"正在析构中~~~~"<<endl; delete b; for(int i=0;i<size;i++) delete A[i]; delete A; } void Matrix::Disp() { for(int i=0;i<size;i++) { for(int j=0;j<size;j++) cout<<A[i][j]<<" "; cout<<endl; } } void Matrix::Input() { cout<<"请输入A:"<<endl; for(int i=0;i<size;i++) for(int j=0;j<size;j++){ cout<<"第"<<i+1<<"行"<<"第"<<j+1<<"列:"<<endl; cin>>A[i][j]; } cout<<"请输入b:"<<endl; for(int j=0;j<size;j++){ cout<<"第"<<j+1<<"个:"<<endl; cin>>b[j]; } } double* Dooli(Matrix& A) { double *Xn=new double [A.size]; Matrix L(A.size),U(A.size); //分别求得U,L的第一行与第一列 for(int i=0;i<A.size;i++) U.A[0][i]=A.A[0][i]; for(int j=1;j<A.size;j++) L.A[j][0]=A.A[j][0]/U.A[0][0]; //分别求得U,L的第r行,第r列 double temp1=0,temp2=0; for(int r=1;r<A.size;r++){ //U for(int i=r;i<A.size;i++){ for(int k=0;k<r-1;k++) temp1=temp1+L.A[r][k]*U.A[k][i]; U.A[r][i]=A.A[r][i]-temp1; } //L for(int i=r+1;i<A.size;i++){ for(int k=0;k<r-1;k++) temp2=temp2+L.A[i][k]*U.A[k][r]; L.A[i][r]=(A.A[i][r]-temp2)/U.A[r][r]; } } cout<<"计算U得:"<<endl; U.Disp(); cout<<"计算L的:"<<endl; L.Disp(); double *Y=new double [A.size]; Y[0]=A.b[0]; for(int i=1;i<A.size;i++ ){ double temp3=0; for(int k=0;k<i-1;k++) temp3=temp3+L.A[i][k]*Y[k]; Y[i]=A.b[i]-temp3; } Xn[A.size-1]=Y[A.size-1]/U.A[A.size-1][A.size-1]; for(int i=A.size-1;i>=0;i--){ double temp4=0; for(int k=i+1;k<A.size;k++) temp4=temp4+U.A[i][k]*Xn[k]; Xn[i]=(Y[i]-temp4)/U.A[i][i]; } return Xn; } int main() { Matrix B(4); B.Input(); double *X; X=Dooli(B); cout<<"~~~~解得:"<<endl; for(int i=0;i<B.size;i++) cout<<"X["<<i<<"]:"<<X[i]<<" "; cout<<endl<<"呵呵呵呵呵"; return 0; }
标签: 道理特分解法
上传时间: 2018-05-20
上传用户:Aa123456789
锂电池BMS管理技术是移动机器人的关键技术,本文设计了基于bq76PL455、STM32F103的锂电池管理系统,实现了电池组电压、电流、过压、过流等状态监测;系统配置均衡电路,电池充电过程中若出现电池单体电压不平衡现象,会触发均衡电路,进而提高电池的安全性,延长使用寿命。Lithium battery BMS management technology is the key technology of mobile robot.The lithium battery management system based on bq76PL455 and STM32F103 is proposed to realize the monitoring of battery pack voltage,current,overvoltage and overcurrent.The system is equipped with equalization circuit.When the battery cell voltage imbalance occurs,the equalization circuit is triggered to improve the safety and service life of the battery.
上传时间: 2022-04-02
上传用户:
SA8340国产马达驱动,低Rdson发热更小,导通损耗小,寿命更长。SA8340适用于扫地机,服务机器人,打印机,工业设备,小家电设备特征:ESOP8封装完全PIN to PIN兼容TI:DRV8870,Allegro:A4950,Toshiba:TB67H450FNG具有脉宽调制(IN1-IN2)输入接口全保护与过电流集成保护、欠压闭锁和过电压-温度停机可提供高达4A的峰值驱动电流能力,2.5A持续电流能力3-25V工作电压为2-4串电池应用提供足够裕量QQ 465081813
标签: 马达驱动
上传时间: 2022-04-29
上传用户:
近年来,随着超声学研究的发展,功率超声技术得到了越来越广泛的应用。超声波清洗技术作为功率超声技术的一个分支,以清洗速度快、效果好、易于实现自动化等优点,为传统工业清洗领域注入了新鲜的血液。作为超声波清洗机的核心组件,超声逆变电源的设计一直是超声波清洗系统设计的关键环节,它性能的好坏很大程度上决定了最终的清洗效果。以往的超声逆变电源的设计通常是基于模拟集成控制芯片的,这种实现方式在频率、功率控制的精度和速度上以及系统的灵活性、稳定性方面存在着一定的局限性,限制了超声逆变电源的发展。数字控制技术的出现,很好地弥补了上述缺陷,因此本课题将数字控制技术引入到超声逆变电源控制电路的设计中是很有意义的。 本文首先对超声逆变电源的基本结构和工作原理做了简单介绍,针对超声逆变电源各部分的结构特点,并结合一些传统设计方案优缺点的分析,确定了二极管不控整流的整流电路设计方案、电压源型串联谐振逆变器的逆变电路实现方案、基于锁相环的频率跟踪实现方案、和基于PWM脉宽调制技术的功率调节实现方案。接着,文章详细介绍了频率自动跟踪和功率控制的具体实现方法,利用数学推理和波形分析的方式阐明了方案的可行性,并通过软件仿真验证了方案的正确性。然后,文章还设计了主电路谐振软开关、人机接口电路、采样电路、IGBT驱动以及过流过温保护电路。方案确定了之后,通过观察自制电路板的实验波形表明新构建的超声逆变电源可以保证系统在复杂工况下处于谐振状态,验证了全数字频率跟踪系统和功率调节系统的可行性和有效性。 本文的重点和创新点在于将超声逆变电源的控制电路通过数字化来实现。本文创新地利用FPGA构建了全数字频率跟踪系统——数字锁相环和全数字功率调节系统——数字PWM调制、数字PID调节,从而取代了传统的模拟锁相环芯片CD4046和模拟PWM控制芯片SG3525,在控制的精确性、快速性和灵活性上都有了很大的提高。此外,利用ATmega16单片机实现了人机接口电路、频率采样和电流A/D转换,并通过SPI接口与FPGA进行数据传输,完善了数字控制体系,从而实现了基于FPGA和单片机的全数字控制超声逆变电源系统。
上传时间: 2022-05-30
上传用户:
(一)电机问题(1) 电动机窜动:在进给时出现窜动现象,测速信号不稳定,如编码器有裂纹;接线端子接触不良,如螺钉松动等;当窜动发生在由正方向运动与反方向运动的换向瞬间时,一般是由于进给传动链的反向问隙或伺服驱动增益过大所致;(2) 电动机爬行: 大多发生在起动加速段或低速进给时, 一般是由于进给传动链的润滑状态不良,伺服系统增益低及外加负载过大等因素所致。尤其要注意的是,伺服电动机和滚珠丝杠联接用的联轴器,由于连接松动或联轴器本身的缺陷,如裂纹等,造成滚珠丝杠与伺服电动机的转动不同步,从而使进给运动忽快忽慢;(3) 电动机振动:机床高速运行时,可能产生振动,这时就会产生过流报警。机床振动问题一般属于速度问题,所以应寻找速度环问题;(4) 电动机转矩降低: 伺服电动机从额定堵转转矩到高速运转时, 发现转矩会突然降低,这时因为电动机绕组的散热损坏和机械部分发热引起的。高速时,电动机温升变大,因此,正确使用伺服电动机前一定要对电动机的负载进行验算;(5) 电动机位置误差:当伺服轴运动超过位置允差范围时(KNDSD100 出厂标准设置PA17 :400 ,位置超差检测范围),伺服驱动器就会出现“ 4”号位置超差报警。主要原因有:系统设定的允差范围小;伺服系统增益设置不当;位置检测装置有污染;进给传动链累计误差过大等;(6) 电动机不转:数控系统到伺服驱动器除了联结脉冲+ 方向信号外,还有使能控制信号,一般为DC+24 V 继电器线圈电压。伺服电动机不转,常用诊断方法有:检查数控系统是否有脉冲信号输出;检查使能信号是否接通;通过液晶屏观测系统输入/ 出状态是否满足进给轴的起动条件;对带电磁制动器的伺服电动机确认制动已经打开;驱动器有故障;伺服电动机有故障;伺服电动机和滚珠丝杠联结联轴节失效或键脱开等。
标签: 伺服系统
上传时间: 2022-06-01
上传用户: