版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
通用机器人程序设计2004年01月一、通用ROBOT教学用机器人的运行环境通用ROBOT教学用机器人使用的BASIC单片机,采用美国Microchip公司的PIC16C57单片机注入单片机BASIC语言解释程序,它兼有单片机的实用、低价、省电、小巧和BASIC编程的易学易用的特点,免去了用单片机的汇编语言开发应用程序的艰辛。固化在CPU内部的BASIC解释程序,提供了31个语句。具有16位双向可独立编程(I/O)口,BASIC语言支持多种
I/O操作。工作速度:在20MHz的系统时钟下,每秒可执行8000条以上的BASIC语句。BASIC源程序存放在外接的24C16B串行EEPROM。EEPROM的容量为2K字节,约可存放600~800条语句。当与PC机连接时,可以在线下载、修改和调试BASIC源程序。二、启动DOS操作系统通用机器人的软件是基于DOS操作系统的,要启动通用机器人软件,首先应先进入DOS操作系统:有以下几种进入DOS操作系统的方法:
在WINDOWS窗口中工作时,切换请在关闭WINDOWS
操作系统时,选择“重新启动计算机并切换到MS-DOS方式”。
在开机时不进入WINDOWS操作系统,而应按F8键选择菜单的第5项,切换到MS-DOS方式。用DOS启动盘直接进入DOS系统。要启动通用机器人软件,首先应先进入DOS操作系统进入DOS系统后,首先将当前盘符C:改变成软件所在盘符⑴在提示符D:>的后面键入CDTYBASIC并回车进入BASIC所在的文件夹。⑵直接键入可执行文件TYBASIC,敲入回车键后进入编辑窗口快捷键提示程序编辑区快捷键提示2.窗口操作⑴窗口上方快捷键提示Alt/RAlt/LAlt/SAlt/FAlt/NAlt/Q下载并运行TYBASIC程序载入文件至编辑缓冲区保存编辑缓冲区中的内容至文件寻找一个字符串再次寻找退出TYBASIC⑵窗口下方常用编辑键的提示:Shift:加上光标↑↓←→移动键成为标记块的操作键。Alt/X:删去标记块Alt/C:标记块拷入剪接板Alt/V:将剪接板的内容粘贴(插入)到当前光标位置TYBASIC系统是基于PC-DOS的操作系统,一切的操作只能用键盘控制。四、应用实例要实现某一个功能,需要在按下ALT键的同时敲命令的第一个字母。1.打开一个编辑好的程序⑴在按下ALT键的同时敲“Load
“命令的第一个字母L,此时在编辑窗口出现一个打开程序的对话框。⑵输入演奏音乐的程序M-TYSG.BAS,敲回车键。⑶演奏音乐《同一首歌》的程序就会出现在编辑区。2.保存已经编辑好的程序。⑴在按下ALT键的同时敲“Save”命令的第一个字母键S,此时在编辑窗口出现一个保存程序的对话框。⑵在光标闪烁处输入文件名MUSIC.BAS,当敲入回车键后,程序就会以MUSIC.BAS的新名子保存起来。3.运行已编辑好的程序⑴连接好通用机器人A将通用机器人数据下载线的连接打印机口插入计算机的打印机插座。连接数据下载口插头插入通用机器人数据下载口。B将通用机器人正确的拿在手中,打开电源开关。通用机器人后部的正确拿法底部的正确拿法运行已编辑好的程序在按下ALT键的同时敲命令的第一个字母键R。程序运行后,先进行语法检查。下载程序如果联络不成功,那么联络窗口中会提示:ERROR◆Hardware
not
FoundD.此时按任意键,将返回编辑。如果联络成功,将下载代码和数据。若下载成功,小窗中的灰块变色,其中白色小块指示空闲的EPROM空间;红色块表示程序已用的EEPROM空间。五、退出TYBASIC如果要退出TYBASIC,只要按Alt+Q键,就可以退出TYBASIC,返回DOS操作系统。如果你正在编辑一个程序,并且没有保存,那么它会弹出小窗,提示你是否保存这一修改,你可按Y保存修改后退出,或按N放弃修改退出,或按Esc键取消退出而重新编辑程序。一、机器人走图形通用机器人的控制面板一共有16个I/O(输入输出)口,打开不同的I/O口,通用机器人会有不同的反应,本模块直接嵌入主板上,即主板的初始功能。我们可以通过编程序,直接向通用机器人发出“运动命令”,如前进,后退,左转,右转,停止命令,就可实现让机器人走各种图形的表演。机器人走图形二、编程基础1.常量常量:在程序运行中,其值不变的数据。⑴数值常量:与数学中的“常数”概念相同。⑵字符串常量:用双引号“”括起来的字符(字母、数字、符号)。TYBASIC的常数可以是数值或字符(串)。数值可以用三种进位制表示:十进制、十六进制和二进制。表示十进制数值的数字不加任何符号,按常规书写即可;十六进制要在最高位数字前加美元符号$;二进制则加百分号%。字符(串)用双引号括起来。100$64%01100100“A"$AA十进制100十六进制64,相当于十进制100二进制01100100,相当于十进制100字符A,相当于A的ASCII码65十六进制数AA,相当于十进制1702.变量变量:用字符(变量名)表示的,可以取不同值的量。TYBASIC为所有变量事先赋予一个名字(称为预定义名)。⑴通用变量变量W0~W13(字变量,允许值为0~65535)、B0~B27(字节变量,允许值为0~255)和BIT0~BIT31(位变量,允许值为0和1)是通用的变量,可以作为一般变量使用。字变量字节变量位变量PINWPINB0PIN0~PIN7PINB1PIN8~PIN15DIRWDIRB0DIR0~DIR7DIRB1DIR8~DIR15W0B0BIT0~BIT7B1BIT8~BIT15W1B2BIT16~BIT23B3BIT24~BIT31W2B4B5W3B6B7⑵专用变量①专用变量1DIRB0sDIRB1专用变量【格式】DIRB0=<变量值>或
DIRB1=<变量值>【功能】对CPU的I/O口的方向控制的缓冲【说明】对其中的某位写入0,对应的引脚就被设定为输入,反之为输出。在执行后续的每一语句之前,这个字节的数据被送入P0~P15的方向控制寄存器。【应用】l
DIRB0=%00011111;从右向左,将I/O口的0s1s2s
3s4五个引脚设为输出,5s6s7三个引脚为设为输入。l
DIRB1=%00001111;从右向左,将I/O口的8s9s10s11四个引脚设为输出,12s13s14s15四个引脚设为输入。l
DIRB0控制I/O口的0~7引脚,DIRB1控制I/O口的8~15引
脚。②专用变量2PINB0sPINB1专用变量【格式】PINB0=<变量>或PINB1=<变量>【功能】不同的变量打开不同的输出口【说明】l变量值可以是二进制s十进制s十六进制的具体数值,其具体数值是按照打开不同的管脚而确定的。l在执行后续的每个语句之前,将该字节的数据写入P0~P15。【应用】l
PINB0=%00010101
;从右向左,将I/O口的0s2s4三个引脚设为打开,1,3,5s6s7五个引脚为设为关闭。PINB1=%00001111;从右向左,将I/O口的8s9s10s11四个引脚设为打开,12s13s14s15四个引脚设为关闭。PINB0控制I/O口的0--7引脚,PINB1控制I/O口的8--15引脚。编程序1基本语句⑴暂停语句【格式】PAUSE
时间【功能】暂时停止程序的执行,或是延迟一段时间。【说明】在让机器人运动时,是通过时间的长短来控制机器人前进后退的距离,以及左、右转动的角度。时间的具体值就是指时间的长短,它可以精确到毫秒。【应用】
PAUSE
1000
此语句的意思是延时时间设为1秒。(2)结束语句【格式】
END【功能】终止运行2编程序⑴前进:FDdirb0=%00011111pinb0=
0pinb0=%00010101pause
1000pinb0=%00000000end(I/O口的0s1s2s3s4五个引脚设为输出,其余三个引脚为输入)(变量清零<0为十进制>)(前进)(前进1秒)(停止<%00000000为二进制>)(结束)⑵后退:BKdirb0=%00011111pinb0=
0pinb0=%00011010pause
1000pinb0=%00000000end(I/O口的0s1s2s3s4五个引脚设为输出,其余三个引脚为输入)(变量清零)(后退)(后退1秒)(停止)(结束)(I/O口的0s1s2s3s4五个引脚⑶左转:LTdirb0=%00011111设pinb0=
0pinb0=%00010100pause
1000pinb0=%00000000end为输出,其余三个引脚为输入)(变量清零)(左转)(左转1秒)(停止)(结束)⑷右转:RTdirb0=%00011111pinb0=
0pinb0=%00010001pause
1000pinb0=%00000000end(I/O口的0s1s2s3s4五个引脚设为输出,其余三个引脚为输入)(变量清零)(右转)(右转1秒)(停止)(结束)(I/O口的0s1s2s3s4五个引(5)原地左转
dirb0=%00011111脚pinb0=0pinb0=%00010110pause
1000pinb0=%00000000end设为输出,其余三个引脚为输入)(变量清零)(原地左转)(原地左转延时1秒)(停止)(结束)(6)原地右转
dirb0=%00011111pinb0=0pinb0=%00011001pause
1000pinb0=%00000000end(I/O口的0s1s2s3s4五个引脚设为输出,其余三个引脚为输入)(变量清零)(原地右转)(原地右转延时1秒)(停止)(结束)机器人走正方形1.编程序:走正方形的一条边
dirb0=%00011111pinb0
=
0(停止1(前进)(前进(停止)(停止1(左转)(左转(停止)(停止1pause
1000秒)pinb0=%00010101pause
400400毫秒)pinb0=%00000000pause
1000秒)pinb0=%00010100pause
500500毫秒)pinb0=%00000000pause
1000秒)一边二、循环语句1.循环语句【格式】循环体FOR
循环变量
=
初值
TO
终值
STEP
步长………………NEXTFORNEXT变量循环说明语句(循环入口)循环终值语句(循环出口)【功能】循环语句用来执行固定次数的重复动作。【说明】循环变量的初值、终值和步长均可以是常数或变量当步长为1时,STEP可以省略。FOR/NEXT需同时使用缺一不可,循环变量名要一致。循环的嵌套层数不超过8层。用循环语句走正方形:1.流程图(I/O口的0s1s2s3s4五个引2.编程序
dirb0=%00011111脚pinb0=0pause
1000for
b3=1
To
4设为输出,其余三个引脚为输入)(变量清零)(停止1秒)(循环变量b3初值为1,终值为4)pinb0=%00010101
(前进)pause
400pinb0=%00000000pause
1000(前进400毫秒)(停止)(停止1秒)pinb0=%00010100
(左转)pause
500pinb0=%00000000pause
1000(左转500毫秒)(停止)(停止1秒)next
b3pinb0=%00000000end(循环终端语句)(停止)(结束)调整机器人运动的速度1)调整机器人运动的速度在编写通用机器人运动程序时你会发现,你手中的通用机器人运动速度很快。机器人运动的越快,其运行的轨迹偏离预定路线越大。在机器人运动时,不断调整送给pin4(调制脉冲)口的参数,即可实现调速的功能。⑵程序:dirb0=%00011111pinb0=0pause
1000pinb0=%00000101for
b3=1
to
20pin4
=
1pause
20pin4
=
0pause
30(I/O口的0s1s2s3s4五个引脚设为输出,其余三个引脚为输入)(变量清零)(延时1秒)(驱动左电机正转的引脚0和驱动右电机正转的引脚2打开,调制脉冲引脚4不打开)(循环20次)(打开调制脉冲口)(打开调制脉冲口延时20毫秒)(关断调制脉冲口)(关断调制脉冲口延时30毫秒)next
b3pinb0=%00000000
(停止)end
(结束)声音语句【格式】SOUND
引脚号,(声调,持续时间,声调,持续时间,……)【功能】在指定的持续时间内发出给定的声调的声音。【说明】⑴本模块已集成在通用机器人主板的PIN8端口。⑵声调为0-127(0为休止符,1-127分别发出127种频率的声音),实际应用中,可适当改变声音的频率来校正音准。⑶简谱和声音频率对照表低音中音1831106高音111728721082118391310931194944111412059751135121610161156122710571167123⑷持续时间:时间值:1约为1.3毫秒⑸全音符和持续时间对照表持续时间全音符1301/2音符601/4音符301/8音符15无条件转移语句【格式】
GOTO
行标号【功能】无条件地转向指定的行标号去执行程序。【说明】⑴标号是表示某一地址的符号。⑵标号以冒号结束,并且出现在执行语句的前面,而不能出现在不可执行语句前。通用机器人演奏1、2、3、4、5、6、7【程序】:dirb0=%00011111pinb0=0dirb1=%00001111pinb1=0music:sound
8,(83,60)sound
8,(87,60)sound
8,(91,60)sound
8,(94,60)sound
8,(97,60)sound
8,(101,60)sound
8,(105,60)goto
music演奏“同一首歌”:【程序】:dirb0=%00011111pinb0
=
0dirb1=%00001111pinb1
=
0music:sound
8,(97,60,106,30,108,30,110,45,111,15,110,30,106,30)sound
8,(108,60,106,30,101,30,106,130)sound
8,(97,60,106,30,108,30,110,30,110,15,111,15,113,30,106,30)sound
8,(111,45,110,15,113,30,108,15,110,15,108,130)sound
8,(110,60,113,30,117,30,116,45,115,15,115,60)sound
8,(113,30,113,15,115,15,116,30,115,15,113,15,110,130)sound
8,(111,45,111,15,113,30,115,30,113,30,111,分支语句IF……THEN……【格式】
IF
条件表达式
THEN
标号【功能】根据条件表达式是否成立,决定程序的流向。【说明】⑴在条件语句中,条件表达式的值如果为真,那么转到给定的标号去执行程序,否则执行条件语句的下一个语句。⑵条件表达式可以是算术表达式、关系表达式、逻辑表达式等等。①算术表达式:算术运算符:+(加)、-(减)、*(乘)、/(除)、^(乘方)、(、括号算术表达式:用算术运算符和括号,将常量、变量和函数连接起来的式子。②关系表达式关系运算符:=(等于)、<>(不等于)、=>或>=(大于等于)、=<或<=(小于等于)、>、(大于)、<(小于)。关系表达式:用关系运算符把两个算术表达式连接起来的式子。关系表达式的运算结果是一个逻辑值,逻辑值只有两个,真(1)和假(0)。条件成立,其值为真,条件不成立,其值为假。③逻辑表达式逻辑运算符:AND(与)、OR(或)逻辑表达式:用逻辑运算符把多个关系表达式连接起来的式子。逻辑表达式的运算结果是一个逻辑值。运算结果如下:A
AND
B
只有A
为真,B为真,逻辑表达式为真。A
OR
B
A和B中只要一个为真,逻辑表达式为真。利用条件判断走正方形⑴.流程图:⑵编程序:dirb0=%00011111pinb0=0b3=0pause
1000zfx:pinb0=%00010101pause
400pinb0=%00000000pause
1000pinb0=%00010100pause
500pinb0=%00000000pause
1000b3
=
b3
+
1If
b3
<
4
Then
zfxpinb0
=
%000000000end(I/O口的0s1s2s3s4
五个引脚设为输出,其余三个引脚为输入)(变量清零)(变量清零)(延时1秒)(行标号)(前进)(前进400毫秒)(停止)(停止1秒)(左转)(左转500毫秒)(停止)(停止1秒)(变量加1)(当变量b3小于4程序转到行标号zfx执行,否则转下一个语句)(停止)(结束)多分支语句【格式】
BRANCH
变量,(标号0,标号1,…,标号n)【功能】多分支语句根据变量的值转向不同的标号。【说明】⑴如果变量的值为零,那么转至标号0;为1转至标号1,依此类推。如果变量的值大于n,那么执行下一条语句。⑵这个语句用于那些需要根据某一变量的值进行不同处理的场合,这样就可以用多分支语句分别转到几个不同的标号。程序dirb0=%00011111pinb0
=
0dirb1=%00011111pinb1
=
0b2=0loop:branch b2,
(st0,st1,st2,st3,st4)sound 8,(83,120,
87,120,91,120,
94,120,
97,120)endst0:
sound
8,(83,120)b2=b2+1goto
loopsound
8,(87,st1:120)b2=b2+1goto
loopsound
8,(91,st2:120)b2=b2+1goto
loopsound
8,(94,st3:120)b2=b2+1goto
loop:sound
8,(97,st4:120)b2=b2+1红外线传感器红外发射器红外发射器可以发出红外线,如果有障碍物,该障碍物将红外线反射回来。红外接收器红外接收器是一种接收设备。它检测从障碍物反射回来的红外线。红外接收器有各种不同的工作方式。红外接收器在在接收到红外线时,该接收器将被激活。红外线传感器通用机器人的红外线传感器具有很好的避障功能,它是由红外线发射管、红外线接收管组成,红外线传感器的检测距离可在10—30cm之间选择,当红外线发射管发出的红外线,遇到障碍物将红外线反射回来,该接收管接收后将被激活。通用机器人在机身的前面、左面、右面三个不同方位各安装了一个红外线传感器,可以实现三个方向的避障,因此可以用它来走迷宫。机器人躲避障碍机器人避开正前方障碍物流程图程序
dirb0=%00011111pinb0
=
0loop:If
pin5
=
0
thenpinb0=%00010101pause
200pinb0
=
%00000000pause
500goto
loopzz:pinb0=%00010110pause
300pinb0
=
0pause
500goto
loopzz
(如果前避障有信号,则执行zz)(前进)(前进延时200毫秒)(停止)(停止延时500毫秒)(无条件地转向标号loop)(行标号)(原地左转)(原地左转延时300毫秒)(停止)(停止延时500毫秒)(无条件地转向标号loop)机器人躲避障碍物的完整程序条件判断语句逐级进行判断通用机器人躲避正前方及左、右两边障碍物的完整程序:⑴程序分析:①避障头的情况:PIN5=0——前避障头有信号PIN6=0——左避障头有信号PIN7=0——右避障头有信号②通用机器人前进,PIN5=0(前避障头检测到信号)的情况:当PIN6=0PIN7=0通用机器人原地右转调头,返回继续判断。当PIN6=0PIN7≠0通用机器人原地右转,返回继续判断。当PIN6≠0PIN7=0通用机器人原地左转,返回继续判断。当PIN6≠0PIN7≠0通用机器人原地左转,返回继续判断③通用机器人前进,PIN5≠0(前避障头没检测到信号)的情况:当PIN6=0PIN7=0通用机器人前进,返回继续判断。当PIN6=0PIN7≠0通用机器人原地右转,返回继续判断。当PIN6≠0PIN7=0通用机器人原地左转,返回继续判断。当PIN6≠0PIN7≠0通用机器人前进,返回继续判断流程图程序
dirb0=%00011111pinb0
=0Loop:Ifpin5=0thenpd1(前避障头有信号,转到判断1Ifpin6=0thenpd2(前避障头没有信号,左避障If
pin7=0
then没头有信号,转到判断2)lt
(前避障头没有信号,左避障头信号,右避障头有信号转到原地左转)pin6=0thenpd3
(左避障头有信号,转到判goto
fdpd1:If断3)If
pin7=0
then
lt
(左避障头没有信号,右避障头有信号,转到原地左转)(右避障头有信号,转到原地左goto
rtpd2:If
pin7=0then
fd转)fd:pinb0=%00000101pin4
=
1pause
10pin4
=
0pause
20goto
looplt:pinb0=%00000110pin4
=
1pause
20pin4
=
0pause
30goto
looprt:pinb0=%00001001pin4
=
1pause
20pin4
=
0pause
30goto
loopend前进原地左转原地右转程序分析:当通用机器人前进,PIN5=0(前避障头检测到信号)的情况:有四种①pin5=0Andpin6=0Andpin7=0②pin5=0Andpin6=0Andpin7<>0③pin5=0Andpin6<>0Andpin7=0④pin5=0Andpin6<>0Andpin7<>0通用机器人前进,PIN5≠0(前避障头没检测到信号)的情况:有四种①pin5<>0Andpin6=0Andpin7=0②pin5<>0Andpin6=0Andpin7<>0③pin5<>0Andpin6<>0Andpin7=0④pin5<>0Andpin6<>0Andpin7<>0将这8种情况全部列出,每种情况之间用逻辑运算符AND连接,由通用机器人进行判断,做出相应的反应。流程图编程序dirb0=%00011111pinb0=0Loop:Ifpin5=0Andpin6=0Andpin7=0ThenrtIfpin5=0Andpin6=0Andpin7<>0ThenrtIfpin5=0Andpin6<>0Andpin7=0ThenltIfpin5=0Andpin6<>0Andpin7<>0ThenrtIfpin5<>0Andpin6=0Andpin7=0ThenfdIfpin5<>0Andpin6=0Andpin7<>0fd:pinb0=%00000101pin4
=
1lt:rt:pause
50pin4
=
0pause
30goto
looppinb0=%00000110pin4
=
1pause
50pin4
=
0pause
30goto
looppinb0=%00001001pin4
=
1pause
50pin4
=
0pause
30goto
loopend原地前进原地左转原地右转dirb0=%00011111pinb0=0loop:a20:a30:a40:b0=0if
pin5=0
then
zb011if
pin6=0
then
zb001if
pin7=0
then
zb021branch
b0,zb011:zb021:st0:goto
a30bit1=1goto
a20bit2=1goto
a40gotoqjst1:gotokyzst2:gotokzzst3:gotokyzst4:gotokzzst5:gotoqjgotogotokzzkz180st6:st7:qj:kzz:(st0,st1,st2,st3,st4,st5,st6,st7)
kyz:Zb001:
bit0=1kz180:pinb0=%00000101goto
pwmout1pinb0=%00000110goto
pwmout1pinb0=%00001001goto
pwmout1pinb0=%00010110pause
300pinb0=%00000110pause
300goto
looppwmout1:pin4=1pause
20pin4=0pause
5goto
loopend模块化的程序设计1.
转子程序语句和返回语句【格式】GOSUB
标号::程序主程序程序子程序1程序子程序2END标号:::RETURN标号:::RETURN【功能】跳转到指定的行标号开始执行程序。【说明】①子程序用来缩短程序并增加程序的可读性。②从主程序转向子程序使用GOSUB语句。③子程序执行完后,用RETURN语句返回到主程序的GOSUB语句的下一个语句行执行程序。④子程序嵌套不能超过16级。用转子程序语句和返回语句走“8”字:⑴程序分析:①对于在程序中多次出现的内容,可以建立相对独立的程序模块。在程序设计中,由主程序多次进行了调用,简化了程序,缩短程序并增加程序的可读性,用转子程序语句和返回语句,使程序设计模块化。②任务分析:走“8”字分八步完成:①前进、右转③前进、左转⑤前进、左转⑦前进、右转②前进、左转④前进、左转⑥前进、右转⑧前进、右转建立两个子程序:FDRT
前进右转FDLT
前进左转编程序dirb0=%00011111pinb0=0pause1000GoSubFDRT(调用前进右转的子程序)GoSubFDLT(调用前进左转的子程序)GoSubFDLT(调用前进左转的子程序)GoSubFDLT(调用前进左转的子程序)GoSubFDLT(调用前进左转的子程序)GoSubFDRT(调用前进右转的子程序)GoSubFDRT(调用前进右转的子程序)GoSubFDRT(调用前进右转的子程序)pinb0=0end子程序1(前进)(前进300毫秒)(停止)(停止1秒)(左转)(左转300毫秒)(停止)(停止1秒)(返回主程序)子程序2FDLT:pinb0=%00010101pause
300pinb0
=
0pause1000pinb0=%00010110pause
300pinb0
=
0pause1000ReturnFDRT:pinb0=%00010101pause
300pinb0
=
0pause1000pinb0=%00011001pause
300pinb0
=
0pause1000Return(前进)(前进300毫秒)(停止)(停止1秒)(右转)(右转300毫秒)(停止)(停止1秒)(返回主程序)光电模块光电模块采用了窗口比较技术和辅助光源技术,对环境光的变化有较好的抑制作用。光电模块的工作原理是:当两个光敏电阻接收(发光二极管照射到地面后反射回的光)光的强度接近时,两个输出端均呈现高电位(PIN14=1、PIN14=1)。当光电模块两侧的光强差超过一定数值时,比较亮的一侧(如左侧)将输出低电位(PIN14=0)。光电模块的I/O接口使用了PIN14、PIN15,左侧较亮时PIN14=0,右侧较亮时PIN15=0。流程图机器人沿黑线行走程序
dirb0=%00011111(I/O口的0s1s2s3s4五个引脚设为输出,其余三个引脚为输入)(变量清零)pinb0=0dirb1=%00001111(I/O口的8s9s10s11s四个引脚设为输出其余12s13s14s15四个引脚为输入)(变量清零)pinb1=0pause
1000Loop:Ifpin14=0Thenrt(左侧输出低电平,向右转)Ifpin15=0Thenlt(右侧输出低电平,向左转)(前进)(打开调制脉冲口)(打开调制脉冲口延时10毫秒)(关断调制脉冲口)(关断调制脉冲口延时10毫秒)pinb0=%00000101pin4=1pause
10pin4=0pause
10goto
loop左转lt:sound8,(87,15)pinb0=%00000110pin4
=
1pause
30pin4
=
0pause
10goto
looprt:右转sound8,(83,15)pinb0=%00001001pin4
=
1pause
30pin4
=
0pause
10goto
loop(I/O口的0s1s2s3s4五个引脚设为输出,其余三个引脚为输入)(变量清零)(I/O口的8s9s10s11s四个引脚设pinb0=0dirb1=%00001111输pinb1=0出其余12s13s14s15四个引脚为输入)(变量清零)pause
1000Loop:Ifpin14=0Thenlt(左侧输出低电平,向左转)Ifpin15=0Thenrt(右侧输出低电平,向右转)pinb0=%00000101pin4=1pause
10pin4=0pause
10(前进)(打开调制脉冲口)(打开调制脉冲口延时10毫秒)(关断调制脉冲口)(关断调制脉冲口延时30毫秒)机器人沿白线行走编程序dirb0=%00011111lt:sound8,(87,15)pinb0=%00000110pin4
=
1pause
30左转pin4
=
0pause
10goto
loop右转rt:sound8,(83,15)pinb0=%00001001pin4
=
1pause
30pin4
=
0pause
10goto
loopend随机数语句随机数语句产生一个伪随机数。其格式为:RANDOM
Var其中,Var是接收伪随机数的字变量和工作变量(其后的随机数以为基础计算)。例:
RANDOM
W1将产生一个伪随机数,并将这个伪随机数赋给变量W1。充分利用EEPROM空间EEPROM[地址,](常数,常数…)其中地址是一个常数或变量,它指定存放的起始地址。如果不指定地址,那么接着上一个EEPROM语句存放的最后一个数据往下存放;如果是第一个EEPROM语句,那么从0开始。例如:EEPROM
4,(3,2,5)将3、2和5依次存入地址4、5和6。注:常数语句不是一个可执行语句。读语句读语句从数据空间中读出数据。格式如下:READ地址,Var其中地址可以是常数(0~255)或字节变量。它将数据空间中指定址的内容读出并赋给变量。写语句写语句将数据写入数据空间中的指定地址。格式如下:WRITE地址,常数|变量其中地址可以是常数(0~255)或字节变量。read
128,b8‘(将数据空间中第128地址的内容读出并赋给变量B8)"(将变量B8进行累加,步长为1)"(如果变量B8大于3,则执行EEP1)b8=b8+1if
b8>3
then
eep1write
128,b8goto
start0‘(将变量B8中的数据写入数据空间的第128地址中)"(执行START0)"(将0写入数据空间中的第128地址eep1:
write
128,0b8=0start0:
debug
b8if
b8=1
then
z2if
b8=2
then
z3if
b8=3
then
z4"(将0赋给变量B8)"(将变量B8的状态在显示屏上显"(如果变量B8为1,则执行Z2)"(如果变量B8为2,则执行Z3)"(如果变量B8为3,则执行Z4)查表语句查表语句从数据表中找出对应指定序号的数据。格式为:序号,(数据表),Var2,(b1,b0,3,b5,0),b9的执行结果是b9=3。LOOKUP例如:Lookup而语句:Lookup
3,(b0,3,4,b5,7),b8将b5的值赋给b8。注:如果序号大于等于项数,那么变量的值不变。变量显示DEBUG
显示内容命令(CLS清除DEBUG窗口)查找语句它在数据表中从左自右查找给定的目的数据,如果在表中找到与目的数据相等的项,那么将该项在表中的序号(从0开始)赋给定的变量。LOOKDOWN目的数据,(数据表),Var例如:LOOKDOWN
5,(B1,B0,5,B5,0),B3当B1
=
5
时,B3
=
0
当B1
≠
5且B0
=
5时,B3
=
1当B1≠5且B0≠5时,B3=2注:如果在数据表中找不到与目的数据相等的项,那么变量的值不变。例如:
b3
=
23LOOKDOWN
3,(1,2,5,4),b3debug
b3那么b3的值不变,还是23。I/O引脚的方向控制方向设定可以用方向控制语句或写DIRW变量。方向控制语句有三个,如表所示:其中引脚号可以是值为0~15的常数或变量。通过写DIRW(或DIRB0~DIRB15)变量也可以设定I/O引脚的方向。例如:DIR1
=
0DIR2
=
1"引脚1为输入"引脚2为输出数字量输出数字量输出通过引脚输出数字量。数字量输出可以使用数字量输出语句也可以通过写PINB1和PINB0(或PIN0~PIN15)变量来实现。(1)数字量输出语句数字量输出语句共三个,其格式和功能如表。例:OUTPUT
2LOW
2TOGGLE
2"引脚2为输出"使引脚2输出一个低电平"使引脚2输出一个高电平(承上句)2)写PINW变量输出数字量写PINW变量或PIN0~PIN15变量输出数字量可以通过赋值语句实现。写PINW变量将从8根I/O引脚输出,写PIN0~PIN7将从相应的引脚输出。例如:"8个I/O引脚用于输出"输出b2的值‘引脚0输出高电平DIRB0
=
$FFPINB0
=
b2PIN0
=
1符号命令SYMBOL符号=变量(常数)SYMBOLA2=B1给变量B1取名为A2SYMBOLMAX=254给254取名为MAX,在程序中的254都可以用MAX代替功率控制SLEEP秒数(常数或者是变量)常数在0~65535中间模拟量输入模拟量输入是感知现实世界的物理量的重要手段。因此TYBASIC提供简易的A/D变换语句──POT来读入电阻传感器的阻值。(1)原理POT语句用来读入一个5~50K的电位器、热电耦、光敏电阻或其它可变电阻的输入,即一个电阻传感器的输入。为从POT语句读入电阻值,这个电阻的一端连到I/O引脚,另一端接一个电容到地。这个电路通过引脚向电容充电,当电容充电充满时,在引脚将输一个电位。此时,切换成输入,将通过电容放电至低电平。POT语通过测量放电的时间来测这个电阻值。(2)格式POT语句的格式如下:POT引脚号,比例系数,Var其中:引脚号是此POT使用的I/O引脚的编号,值为0~7,可以是变或常数。比例系数是一个值为0~255的变量或常数。它用来量化读入的值。POT语句在内部计算一个16位的值,而后被按比例量化为8位后给变量Var。这个内部量化出的结果将随着所接的电阻的阻值变而变化。(3)确定比例系数当你要挂接一个电阻传感器(如热电耦)时,你可以找一个范围与相同或略大一些的电位器,先用这个电位器替代它来确定比例系数。确定最佳的比例系数的步骤如下:1).启动最佳系数寻找启动TYBASIC后(或在编辑时)按Alt/P键,此时将出现一个请求定所用的引脚的窗口(见图3-9
a>)。你可以使用→、←或按0~7一选择引脚,然后按回车。2).找最佳系数按回车后,TYBASIC将下装一段代码,下装成功后,出现一个显示比例系数(scale)和读出值(reading)的窗口,如图3-9
b>。调整位器直至Scale的值最小。这个Scale的值就是用于POT语句中的例系数。机器人扩展端口说明(1)机器人提供3个扩展输出口PIN9~PIN11和4个扩展输入口PIN12~PIN15,其区别只是作为输入口的PIN12~PIN15分别接有10K的上拉电阻而输出口则没有。用户也可以不受此限制根据实际需要重新分配输入、输出口。(2)各输入、输出口分别由3X2.54插针引出,其中靠近线路板边缘的为电源地,中间的为I/O,里边的为电源。(3)由于机器人采用4节1.2V充电电池供电,未经稳压,所以实际的I/O口供电电压为4.5~5.5V左右,要求自行设计扩展功能模块时,应能适应此电压变化范围。工作电流原则上不受限制,但是越小越好。电流过大时将大大缩短电池的使用时间建议输入模块消耗电流不超过10mA,输出模块静态不超过
10mA,短时100mA。(4)自行设计扩展功能模块时应注意,良好的电源滤波是必要的,电机工作时电流较大,加之电刷产生火花,可能干扰电路的正常工作机器人走规定图形比赛1.任务:要求通用机器人从比赛场地中的起始区出发,在规定的时间内分别通过7颗星星,到达停止区,以通用机器人的中心(通用机器人的俯视中线)在停止区内为准。2.比赛场地比赛场地可以用已有的机器人灭火比赛场地,也可以自己来设计。⑴用机器人灭火比赛场地比赛场地是一个长250cm、宽250cm正方形区域(用标准的机器人灭火比赛场地)。区域内有长和宽均为300mm的起始区和停止区,起始区和停止区的出口和入口分别设有宽度为
10mm的白色标记线,如图⑵比赛场地的地板为黑色的光滑木制表面,比赛场地的中间有7颗白色的星星,直径为40mm,被宽度为40mm的白色线
由起始区贯穿到停止区。比赛的场地平面示意图见图程序
dirb0=%00011111pinb0
=
0dirb1=%00001111pinb1
=
0pause
1000Loop:Ifpin14=0ThenrtIfpin15=0ThenltIf
pin5=
0
Andpin6=
0And
pin7=
0Then
Stoppinb0=%00000101pin4
=
1pause
10pin4
=
0pause
10goto
looplt:pinb0=%00000110pin4
=
1pause
30pin4
=
0pause
10goto
looprt:pinb0=%00001001pin4
=
1pause
30pin4
=
0pause
10goto
loopStop:pinb0
=
0sound
8,(105,250)End程序设计1.程序⑴
学会正确的编程序编程序就是你对计算机发号施令。用一个或者多个命令使计算机做你想要做的事,但是要想把事情做好,总要讲究些方法及做事的步骤,这就要求你学会正确的编程序。⑵什么是计算机程序计算机程序是用计算机能理解的语言来描述的,计算机可以理解和执行的一系列有序指令的集合。计算机程序主要包括事件描述和操作步骤两个方面。我们可以这样理解:事件的描述称为数据结构,操作的步骤称为算法。这样就可以认为程序=数据结构+算法。2.结构化程序设计⑴结构化设计原则①使用语言的基本控制结构。如:顺序、选择、重复等。②选用的控制结构只准许一个入口和一个出口。③复杂的结构用基本的控制结构来组合和嵌套。④程序语句组成容量识别的块,每个块只有一个入口和一个出口。⑤严禁控制GOTO语句。仅在以下情况下可使用ll用非结构化的语言去实现一个结构化的构造。只是在可能改善而不是损害程序可读性的情况下。⑵“自顶向下,逐步求精”的解决方法结构化程序设计的思想要求“自顶向下”的方法设计程序模块结构图,运用“逐步求精”的方法设计模块程序的算法,使用无GOTO语句的编程技巧,通过组合3种基本逻辑结构(顺序结构、循环结构、分支结构)的嵌套构造程序。“自顶向下,逐步求精”的设计有以下的特点:①“自顶向下,逐步求精”思想符合解决问题的规律,可以提高程序设计的成功率。②“逐步求精”的过程开发出来的程序有清晰的结构,容易阅读和理解。③
程序“自顶向下,逐步求精”形成一个树形结构,每一个点都是一个独立的功能模块,因此程序易于调试。④程序清晰和模块化,可重复利用已编制好的模块。机器人灭火比赛一个由计算机程序控制的机器人,在一间模拟平面结构为四室一厅的单元房间里运动,找到一根燃烧的蜡烛并尽快将它扑灭。它模拟了现实家庭中机器人处理火警的过程。蜡烛代表房间里燃起的火灾,机器人必须尽快找到并扑灭火源,这就是机器人灭火比赛。比赛场地模拟平面结构的房间和特性如下:模拟房间的墙壁33cm高,材质为木板。墙壁为白色。竞赛场地的地板为黑色的光滑木制表面。地板可以有接口,但接合处平整并是同样的黑色。场地的平整度要求,只要机器人可以处理0.3cm的不连续区域就可以。竞赛场地模拟房间里整体地面是水平的,没有斜坡和楼梯。房子中,所有的走廊和门口宽都不小于46cm。门口并没有门,在地面上用一条2.5cm宽的白线表示房间入口。机器人灭火3.比赛规则⑴机器人的运行机器人一旦启动必须在没有参赛选手的干预下自动控制,即:机器人必须是由计算机程序控制,而非人工现场控制。机器人在运行过程中可以碰撞或接触墙壁,但是不能故意标记和破坏墙壁。机器人当经过比赛场地时不能把任何东西留在后面,并且它不能在比赛场地留下任何可以帮助它运行的标记。⑵扑灭蜡烛火焰机器人不能运用任何破坏性的或危险的方法来扑灭蜡烛火焰它可以运用类似水、空气、CO2等,或者使用机械方式,可以通过吹气来熄灭蜡烛,尽管这在现实生活中不一定是适合的灭火方法,但在机器人灭火竞赛中是允许的。蜡烛在燃烧状态时不允许被撞倒。如果机器人在灭火过程中碰撞蜡烛,机器人的运行仍然有效。如果蜡烛被撞倒,按未完成灭火任务处理。机器人在试图扑灭火焰前必须到达距离火焰30cm以内。在距离火焰30cm的圆上有一条2.5cm宽的白线,机器人在扑灭火焰之前必须有一部分在圆圈内。⑶家具竞赛场地的每个模拟房间里有一件家具。模拟家具是一根直径11.5cm,表面涂了半光泽黄色的钢柱,柱高30cm、重2.3公斤。机器人可以接触摸家具,但是不能推开家具。家具挡住机器人看蜡烛的视线或者机器人要绕过家具才能到达蜡烛,这增加了家具方式的趣味性、真实感和挑战性。机器人为了看一看家具是否真的挡住它的视线,也许要从不同角度来查看房间,如果蜡烛真的在家具后边,机器人要确定接近蜡烛的最佳路径。⑷蜡烛安装在一个漆成黄色的半透明木质基座上(7.5cm
x
7.5cmx3.5cm)。蜡烛白色。火焰的底部离地面15cm到20cm高,这高度包括支持蜡烛的木质基座。器人灭火机器人踢足球一.
机器人足球比赛规则比赛场地及设备标准:1、场地:长240cm,宽160cm,高18cm。2、墙壁:场地边界放置墙壁(包括球门区),由木板制成。墙壁外侧为红、黄、绿相间的彩色,墙壁内侧为黑色。3、球门:球门位于场地底线的中间,宽60cm,深15cm,门前有一条宽0.8cm的红色球门线。4、基板:球场铺有一张灰度由浅至深的黑白图纸,基板应尽量保持平整和水平。5、球门区:从球门线两端向中场延伸20cm的矩形区域。6、点球位:两个半场内距球门线中点垂直距离60cm处。7、开球点:球场中央点。8、坠球点:经过点球位,与中场线平行,形成2条线;再将球场纵向4等份,形成3条线。这样,包括中场线在内的6条线所形成的9个交点即为坠球点(见上图)。(在真实的场地中坠球点没有明显标志)9、照明:为室内体育馆灯光。10、机器人:机器人(包括所有部件)必须在一个直径为30cm圆的范围内,限高22cm,限重2.5kg。机器人踢球装置的深度最大为3cm。11、足球:直径9cm,重160±5g。是一个内部装有电池与小电珠的透明发光球。名词解释1、出界球:足球(越过墙壁)被机器人踢出球场外。2、进球:足球的中心(即球的1/2以上)越过球门线且非出界球,即为进球。3、死球:足球被机器人和墙夹在中间无法移动、或足球被多个机器人包围卡住不动超过10秒钟时,则为死球。4、丢球:机器人在第一次踢出球以后5秒内没有再接触到球。5、比赛中断:裁判员吹哨宣布比赛开始或继续后,在20秒内没有任何机器人触到球,而且看上去没有机器人将会触到球,为比赛中断。6、坠球:当发生死球或比赛中断时所采用的继续开始比赛的方式。7、任意球:发生犯规判罚、出界球、点球未中时所采用的继续开始比赛的方式。比赛规则1、赛前准备:各参赛队应根据比赛时间安排,提前半小时进入比赛区域,做赛前检查及准备调试。比赛开始前,每个机器人需要接受全体裁判员的检查,以确证它们符合上述规范。检查时,机器人大小以其最突出部位为准,即最长点为计算点。不符合规则的机器人将被取消参赛资格。为了验证机器人的搭建和编程是否参赛选手自己制作完成,在比赛前将要求参赛选手陈述如何操作他们的机器人。不允许指导老师进入检查区域。2、机器人:机器人装饰物不能对比赛有任何影响。守门机器人在外观上必须与其他上场机器人有所区别。禁止使用无线或红外线装置等进行遥控,禁止参赛选手在墙上、地上或其他位置放置灯塔或反射物等来帮助机器人导航。每个比赛半场的开始和每次暂停后由裁判指示参赛者来激活足球机器人。每队可带4个机器人。2个机器人上场比赛,其中可有1名守门机器人。另外2个机器人作为替补。3、开球:开球时,所有的机器人都必须位于自己的半场,且必须处于静止状态。由裁判将球放置在开球点,所有不开球的机器人必须离球大于25cm。开球方将机器人放置在球附近。裁判可以调整机器人的位置,并宣布完成调整。裁判吹哨后,比赛开始。开球机器人触球后,其他机器人方可触球。某方进球后,应由对方以同样方式,重新开球继续比赛。下半场,参赛双方互换场地及开球权。4、比赛时间:常规赛:比赛分上下两个半场,各5分钟,中场休息时间2分钟,比赛开始前,每队有2分钟的准备调试时间。比赛时钟将持续计时(两个5分钟半场),不会停止(“被破坏机器人”除外)。计时器由裁判来控制。由于坠球、替补、处理伤员、罚点球、延误时间及其它原因损失的时间均应扣除。加时赛:比赛需有胜负时,且双方在10分钟比赛中打成平局,另加加时赛。加时赛分上下两个半场,各2分钟,中间不休息。加时赛规则同上(包括猜边、开球等)。加时赛采取突然死亡法,即一方进球后比赛结束。5、点球:胜负点球:比赛需有胜负时
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医生党课课件教学课件
- 神经内科电场治疗方案
- 新人入职培训规章制度
- 糖尿病伤口处理
- 眼耳鼻喉科护理查房
- 老年病科科普讲解大赛
- 博物馆奇案教案反思
- 化学肥料说课稿
- 好玩的竹梯说课稿
- 过秦论的说课稿
- 申请工程工期顺延的函(联系单)
- 脑室引流管护理课件
- 《第二单元 影视金曲 眺望你的路途》教学设计教学反思-2023-2024学年初中音乐人音版七年级下册
- 2024年支部书记廉洁谈话记录内容篇
- 心肺复苏+AED技术
- 防洪工程竣工报告
- 20S805-1 雨水调蓄设施-钢筋混凝土雨水调蓄池
- 中华民族共同体概论课件专家版3第三讲 文明初现与中华民族起源(史前时期)
- 消防安全 牢记心间
- 脚手架搭设及验收(汇编)
- 零星维修工程施工组织设计
评论
0/150
提交评论