1、Void wait(float sec) 让前一状态保持一段时间Int digitalport(int channnel)读数字口上传感器的值。 channel的范围是 07.返回值0或1Int photo ( int index)光敏传感器。左 1右2.返回值0255,光线越暗数值越大。Int microphone() 声音传感器的值,返回值 0255.,声音越响数值越大。Int ir_detector() 红外测障, 0 无 1 左 2右 4前Int bumper()碰撞传感器,0无1左2右4前8后Int rotation(int index)光电编码器,1 左 2 右6、 多个进程如果进
2、行通讯怎么办 ?多进程之间的通讯及同步问题 。 遵循的原则 ? 进程间的通讯:通过全局变量进行。多进程之间的通讯及同步问题。遵循的原则: 1)一种设备只在一个进程中访问; 2)同时只能有一个进程写一个全局变量,但可以有多个进 程同时读。7、使用 JC 会遇到的错误类型使用 JC 会遇到两种类型的错误:编译错误和运行错误。编译错误包括:语法错误和数 据类型不匹配。运行错误发生时,将在液晶屏幕上显示错误号。错误代码列表( P29)8、如果程序不能正常下载 ,可能有以下 6 个方面的原因 :1)能力风暴的主开关未打开。2)电池电压不足。3)机器人型号设置不正确。4)该串口硬件有问题。5)能力风暴操作
3、系统被破坏。6)串口线头过松,接触不好9、 几种常用的操作 。 如何更新操作系统 如何为机器人配置型号 如何给机器人充电 如何下载自检程序 如何下载当前程序 如何正确使用复位/ASOS按钮 如何让机器人走的直线更好10、 构成机器人的三大要素是什么 ?请从这三大要素着手分析说明机器人的工作原理 。构成机器人的三大要素是:传感器、 微控制器和执行器。 机器人的工作原理:机器人通 过传感器采集外界环境信息,然后将采集的信息经过转换元件转换成电信号,再经过 A/D转换成数字量,传递给机器人的大脑 一一微控制器,微控制器根据装载的 JC程序进行思考, 发出相应的命令给执行器执行。11、 机器人的身体结
4、构: 主板:由很多电子元器件组成,跟人的大脑一样,主要完成接收信息、处理信息、和发出指令等。控制按键: 机器人的运行控制部件。 包括开关按钮、 电源指示灯、 充电指示灯、 充电口、 下载口、复位 /ASOS 按钮、运行键、通信指示灯。传感器部分:包括五种基本的传感器( P10)。执行部分:扬声器、 LCD 、主动轮及其驱动机构、从动轮。12、 微控制器 68HC11 , 端口 AE 的功能 。在机器人中的使用情况 。PORT A :数字口。PA2输入捕捉通道。 PA3-PA6输出比较通道。 PA7通用的I/O 口。能力风暴机器人中: 光电编码器利用 PA0、PA1 口捕捉计码盘信号; 电机驱动
5、采用 PA5、PA6 发出 PWM 信号;喇叭由 PA3 控制。PORT B :端口功能受68HC11E的工作模式的影响,单独工作模式下,提供普通的 8条 输出信号通道,扩展工作模式下,提供8位地址通道。PORT B与PORT C提供16条地址线, PORT B做为地址的高8位。PORT C :单独工作模式下,提供普通的 8条输入/输出信号通道,扩展工作模式下,提供8位地址/数据复合通道。 PORT B与PORT C提供16条地址线,8条数据线(PORT C做为地址的低8位,地址/数据时分多用)PORT D: PD0-PD1 作为串行通信口( SCI), PD2-PD5 串行外设接口( SPI
6、); 能力风暴 机器人 中:用 PD0 , PD1 与 PC 机进 行通信 ; PD0(RXD) 接收数 据; PD1(TXD) 发送数据。 红外传感器: 利用 PD2,PD3 设置发光二极管的状态; 直流电机: 利用 PD4, PD5 给驱动电机芯片提供输入脉冲。PORT E:模拟口。光敏传感器利用 PE0, PE1 口采集光敏电阻上的电压值;麦克风利用 PE2 口采集电压值;碰撞传感器利用 PE3 口采集电压值;红外传感器利用 PE4 口采集红外探测器的当前值。13、 机器人的驱动方式?机器人的调速系统采用了哪些装置,它是如何进行调速的?机器人的驱动方式采用差动驱动方式, 将两个独立的运动
7、合成为一个运动。 当我们把两 个电机的运动合成为一个运动时,这就成了差动运动。调速系统采用的装置为: 直流电机和齿轮减速器。 机器人上通过主板发 PWM 脉宽调制 信号, 使电机上得到不同宽度的脉冲方波信号, 从而调节输入到电机的平均电压。 而直流电 机上的电压大小影响他的转速和转矩,直流电机的转速又经过减速器将转动传递给主动轮。 当转矩一定时,加载在直流电机上的平均电压值越大,转速越高;相反,转速越低。这样, 通过改变电机电压的方式就可以实现调速。14、 什么是传感器?它的作用和组成。传感器就是自动测量系统中一个把待测量变换成某种电信号的装置。 传感器是能感觉规定的被测量, 并按一定的规律性
8、, 转换成可用输出信号的器件或装置。 通 常由敏感元件和转换元件组成。15、 能力风暴五种基本传感器,三种基本执行器,所对应的库函数有哪些,如何应用。基 本的结构和执行的过程。五种基本的传感器及其对应库函数及应用方法:( 1 )碰撞传感器: int bumper() 碰撞传感器检测( 2)红外传感器: int ir_detector() 红外传感器检测(3)光敏传感器: int photo() 光敏传感器检测( 4)麦克风: int microphone() 声音传感器检测(5)光电编码器: int encoder(int) 读取光电编码器器当前状态;Int rotation(int inde
9、x) 光电编码器脉冲累计读数 三种基本的执行器及其对应库函数的使用方法:(1)扬声器: void beep() , 使用它可产生一段 0.3秒 500赫兹的音频信号,发生结 束后返回。( 2)LCD :(3)直流电机:void stop()关闭左右两个电机,停止运动; void motor(int m,intspeed)以功率级别speed启动电机m;16、 简述 “基于视频技术的野外探险机器人 ”的硬件组成,以及机器人与电脑之间的控制信 号、视频信号的无线通讯实现过程。基于视频技术的野外探险机器人的硬件组成:机器人、 AS 无线摄像机、视频捕捉卡、 微功率无线通讯模块、电脑。视频信号的无线通
10、讯的实现: 在机器人上安装有 AS 无线摄像机和微功率无线通讯模块, 在上位机安装视频捕捉卡, 视频信号通过机器人上安装的无线摄像头采集视频信息, 通过连 接在电脑上的 AS 无线摄像机的接收模块接收到视频信息, 然后输出到接收模块所连接的视 频采集卡的视频输入端,从而完成机器人与电脑的视频信号的传输。控制信号的无线通讯的实现: 在机器人和上位机上都安装有微功率无线通讯模块, 机器 人与电脑之间,通过微功率无线通讯模块的接收和发送信号,完成控制信号的传输。编写程序:int X=50;int *Xptr;Xptr=&X;printf( “ *Xptr = %nd” ,*Xptr); _50_X=
11、100;printf( “n%”d ,*Xptr); _100_*Xptr=200;printf( “ X=%n”d ,X); _200_P13P14 检测光线亮度和累计左右碰撞次数的程序。把几个机器人放在一起,编写程序并下载运行,试一试机器人你叫我应的场面是不是 很有趣。一部分机器人先发音,一部分机器人先侦听。发音的机器人发音完毕后转入侦听, 听到声音的机器人回应(发音) 。/*初始化b=1时,设置该机器人先侦听;初始化 b= -1时,设置该机器人先发出声音。 */void main()int b=1;int mic;while(1)mic=microphone(); printf(mic=
12、%dn,mic); wait (0.5);if(b=1&mic140)b=b*(-1);beep ( );wait (2.0);if(b=-1)beep();wait (1.0);b=b*(-1);请用光敏传感器让机器人追光。 机器人放在离光源有一段距离的地方, 但光敏传感 器能探测到光源的位置,此时,让机器人向光源靠近,足够接近光源时停下来。Void main() int right,left , diff,even;while(1) right=photo(2); left=photo(1); diff=right-left; even=(right+left)/2; if (even20
13、) drive(60,10); else if (diff180) I+=1;if (I=1) drive(100 ,0);else stop(); I=0;红外避障库函数:/*红外测障,返回值:无 0,左1,右2,前4。 左发射PD2,右发射PD3,接收PE4*/int ir_detector() in t vall, val2, val3, result;vail = read(OxlOOA) & OblOOOO; /*检测接收到的背景红外信号 */bit_set(0x1008,0b0100); /* 打开左红外发射传感器 ,PD2 口 */msleep(2L); /* 等待 2 毫秒 *
14、/val3 = read(0x100A) & 0b10000; /*检测接收到的红外信号 */bit_clear(0x1008,0b0100); /*关闭左红外发射传感器 */bit_set(0x1008,0b1000); /* 打开右红外发射传感器 ,PD3 口 */val2 = read(0x100A) &bit_clear(0x1008,0b1100); /*关闭所有红外发射传感器 */result = (val1 & val2) 3) | (val1 & val3) 4);if(result=3) result=4;return result;8个不同方位的声音,并请用能力风暴机器人做
15、一个简易电子琴,碰撞碰撞环,发出 且在液晶显示器上,分别将 8个不同方位的碰撞信息显示出来。1 (262Hz)麻(393Hz)void mai n()int bump;秒”的显示方式,也就是将系统读出的时间变为具体的分、秒、毫秒值来显示。wait(0.1); /*等待 0.1秒 */ 机器人直走校准程序及调试方法。int drive_bias = 0;void driveb(int trans, int rot) int rot_bias = (drive_bias * trans) / 100 ; motor(0,trans - (rot + rot_bias) ; motor(1,tran
16、s + (rot + rot_bias) ;声与光在不同明暗环境中发不同的声音/* 依据光敏传感器检测值的差值计算发声的频率 */ float freq(int left, int right) int delta;float frq = 100.0;delta = left - right;frq = 2500.0 * (1.0 + (float) delta) / (float) max(left, right); return frq;/* 依据左右光敏检测值的和通过算式计算出发声的间隔时间 */float period(int left, int right) return (0.00
17、08 * (float) (512-(left + right);void dark()int left = 0;int right = 0;while (1)left = photo(1);right = photo(2);tone(freq(left, right),0.1); /* 用算出的频率发声 */wait(period(left, right); /* 用算出的间隔作为发声的间隔 */飞蛾扑火程序:int r,l; /*定义变量r左光敏I右光敏*/int a1,a2,a3; /*定义标志位al找光源方向a2靠近光源a3围绕光源转*/ int d1,d2; /*定义参数di靠近光源
18、左右方向参数 d2旋转参数*/a1=1;a2=0;a3=0; /*标志位设初值,al设1则先执行找光源方向*/ while(1)while(a1) /*执行 a1 找光源 */r=photo(2);l=photo(1);printf(a1:r=%d,l=%dn,r,l);if(r240|l240) /*发现光源方向的条件 */a1=0;a2=1; /*转到a2执行,靠近光源*/drive(0,20); /*原地转,寻找光源方向 */while(a2) /*执行靠近光源 */d1=(l-r)*2; /*设置 d1 参数*/a2:r=%d,l=%d,d=%dn,r,l,d1);150|l240&l
19、240) /* 远离光源的条件 */a1=1; /* 转到 a1 执行,寻找光源方向 */drive(80,d1); /* 靠近光源移动 */while(a3) /* 执行围绕光源转圈 */d2=(r-150)*2; /*设置 d2 参数*/ printf(a3:r=%d,d=%dn,r,d2);drive(80,d2); /* 围绕光源转动,先调整轨道,停留在 r=150 的圆圈轨道上运动 */wait(0.01);跟人走 int ir = 0; /* 红外检测变量 */int bmp = 0; /* 碰撞检测变量 */int old_bmp = 0; /* 前一次的碰撞检测结果 */int
20、 fol_trans_def =80; /* 预设的前进速度 */int fol_rot_def = 40; /* 预设的转弯速度 */ printf(Follown /* 显示在 LCD 屏幕上 */ while(1) ir = ir_detector(); /* 取红外系统检测结果 */bmp = bumper() & 0b0011; /* 检测前左、前右方向上的碰撞 */if (old_bmp & (! bmp) /* 连续两次碰撞 */ wait(0.5);else if (bmp) /* 如果前方有碰撞 */stop(); /* 停止运动 */else if (ir = 0) /*
21、前方没有物体 */else if (ir = 4) /* 前方有物体 */ drive(fol_trans_def,0); /* 往前追 */ else if (ir = 1) /* 物体在左侧 */ drive(fol_trans_def,(-fol_rot_def); /* 转向左 */ else if (ir = 2) /* 物体在右侧 */ drive(fol_trans_def,fol_rot_def); /* 转向右 */ wait(0.1); /* 让运动持续一会 */ old_bmp = bmp;鸡宝宝、鸡妈妈。灭火程序示例。多进程同步:int bill_trans=0;int
22、 bill_rot=0;int bmpr=0;int forward=0;int running=0; /* 能力风暴初始值处于静止状态 */ void billiards ()while(1) /* 无限循环检测 */ bmpr=bumper(); /* 检测碰撞传感器 */ if( bmpr!=0 )if(bmpr=0b0011) /* 正前方发生碰撞 */ forward=0; bill_trans=-80; /* 后退 */ bill_rot=0;else if(bmpr=0b1100) /* 正后方发生碰撞 */ forward=1; bill_trans=80; /* 前进 */
23、bill_rot=0;56else if(bmpr & 0b0101) /* 左侧发生碰撞 */ bill_trans=0;bill_rot=-80;wait(0.5); /* 顺时针转一个角度 */ forward=1;bill_trans=80; 0b1010) /* 右侧发生碰撞 */ bill_trans=0;bill_rot=80; /* 逆时针转一个角度 */ forward=1; /* 前进 */bill_rot=0;void billiards_ir()int ir; while(1)if( running ) /*能力风暴没有开始运动,不检测障碍 */ ir=ir_detec
24、tor(); /* 检测红外传感器 */if( bmpr=0 & forward ) /*后退或发生碰撞时,不避障 */ if(ir=2) /* 右侧有障碍,向左绕 */ bill_trans=20; /* 逆时针转 */else if(ir=1) /* 左侧有障碍,向右绕 */ /* 顺时针转 */else if(ir=0) /* 前方没有障碍,恢复直行 */ bill_trans=80; bill_rot=0;57void billiards_drive() running = bill_trans; /* 能力风暴正在运动 */ drive(bill_trans,bill_rot); /* 驱动电机 */ start_process(billiards_drive(); /* 创建电机驱动进程 */ start_process(billiards_ir(); /* 创建避障进程 */ start_process(billiards(); /* 创建碰撞处理进程 */
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1