全地形载重机器人流浪者-大学毕业设计_第1页
全地形载重机器人流浪者-大学毕业设计_第2页
全地形载重机器人流浪者-大学毕业设计_第3页
全地形载重机器人流浪者-大学毕业设计_第4页
全地形载重机器人流浪者-大学毕业设计_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

全地形载重机器人——流浪.第一章:准备组装器材必需的工具螺丝刀丝攻1/8钻头小活动扳手或套筒扳手剪钳少量润滑油或类似油脂流浪者机器人套件包括下列元器件:电子元件\软件12个HiTecHS-475HB伺服电机6个HiTecHS-645MG伺服电机伺服电机连接延长线(6长2短)parallax教学板一块型号BS2P24,2个PSC电机控制器,1个LCD显示模块(该LCD模块只有完整套件才提供)铝质部件:上甲板一块下甲板一块支撑件6个电机固定器6个腿的前半部分6件腿的后半部分6件脚的前半部分6件脚的后半部分6件6个电机输出臂螺母、螺钉、垫圈、尼龙支柱

12颗#2-5/16英寸螺钉64颗#4–1/4英寸螺钉12颗#4–1/2英寸螺钉12颗#4–5/16英寸螺钉64个#4螺母12个#4锁紧螺母64个#4弹簧垫圈24个#4垫圈12个#4-1/4英寸尼龙支柱36颗#6-3/8英寸螺钉42个#6螺母42#6弹垫6个#6-1/2英寸螺母12个#6垫圈6个#6锁紧螺母18个1/4SAE平垫6颗#8—1.25英寸螺钉6颗#8弹垫12颗#8垫圈6个#8-1/2英寸尼龙支柱6个#8-1/4英寸尼龙支柱其他流浪者组装和编程指导手册24条扎带6个橡胶脚垫12个连接杆12个小铜球12颗内六角螺钉6个4/40螺杆其他自己必须提供的物品完成流浪者机器人的组装,还要求你自己提供一些常用的东西。在你所购的套件中的没有提供的,因为包含这些东西只会使商品的价格增高,而这些东西任何一个机器人爱好者都会有的。当然如果没有也可以从我们这里购买。5v镍电池或6个镍镉充电电池来为伺服电机提供能源。必须是标准的1800mAH到3300mAH电池组合,就是通常用在无线遥控小车里的那种。Crustcrawler有可为流浪者机器人使用的性能很好的可重复使用3300mAH系列镍电池。AC/DC数字式充电器,以便为镍镉或镍电池充电。这个在Crustcrawler公司也选购。小尺寸的扎带,这些有利于你在一种比较整齐的形式下布置你的电线从而达到保护电线的目的。这花不了多少钱,可以在商店中买到,在我们提供的流浪者机器人套件中已经为您提供了12根。有多种符合机器人规格的传感器可供选择,客户可以根据您的实际需要来选配传感器。S3和S2系列传感器标准被设计为符合流浪者底层的要求,它也能接兼容在可获得的大部分传感器。其他传感器可以从Parallax公司购买到。第二章:准备装配组件注意:在一个整齐、干净有较大空间的环境下开展组装工作整理和恰当地摆放你的各类不规格的螺钉、螺母等配件,这样有利于你在装配时正确的使用特定大小的螺钉、螺母、垫圈等,也可以很方便地取用它们。从容不迫!流浪者机器人是一个精密的产品,它要求所有部件都按这个手册中讲的顺序安装。组装好流浪者机器人的平均时间在3到6小时。在安装的过程中请经常参考本安装手册中提供的参考图片。在开始组装任何部件之前,请 仔细参考和研究本手册中提供的安装图片特别是那些特写的图片。必须一直注意螺钉和其他铝材的方位和方向以及装在流浪者机器人腿的那侧。因为不同的装法可导致完全不同的结果。准备伺服电机去掉从它们的保护包装中去掉铝件然后把它们放回在你工作空间里各自的类别中去。像下图所示的那样,去掉HS-475HB伺服电机两端的突起部分。去掉电机上面的塑料突起部份可以让伺服电机齐平地固定在电机固定支架上。这些电机将在接下来的步骤中安装。图1去掉电机两端的塑料突起部分第三章:安装上甲板1.用一个1/8英寸的钻头,把12个电机的输出臂钻好孔如图2所示。提示:钻孔时不要把电机的输出臂从电机上卸下来。钻好孔后,把圆盘形的输出臂从电机上卸下来,暂时把螺钉拧回电机的输出轴上。图2钻孔2.用2颗#4–1/4英寸大小的螺钉、弹垫和螺母,把6个圆盘形的输出臂安装到上甲板上,如图3所示。确认输出臂中央孔的中心和上甲板上孔的中心在同一轴线上后再打紧螺钉。图3安装输出臂到上甲板3.用2颗#6-3/8英寸大小的螺钉,弹垫和螺母,把654MG电机安装到电机固定支架上,电机的方向如图4所示:图4安装654MG电机到固定支架上4.用2颗#6-3/8英寸螺钉,弹垫和螺母,把型号为475HB的伺服电机像图5一样安装到电机固定支架上,确认电机的位置和图5中的位置一样。用一根扎带把电机输出线固定再电机固定支架上(参考图5b)。重复第3步和第4步把六个伺服电机全部安装好。图5安装型号为475HB电机到支架图5b用扎带固定电机输出线5.把同一个固定支架上电机的输出线折成一小束,然后用用扎带把它们捆好以避免这些线在以后的步骤中防碍你的安装。(见图6)6.把安装好电机的这些支架像图图6一样装到上甲板的圆形电机输出臂上。在打紧螺钉之前必须确认安装电机的支架能够以中间为基准向左、向右旋转大约各90度。注意从型号为645电机输出轴上取下来的螺钉要用来把电机安装支架固定在上甲板上,型号为645电机输出轴上的螺钉与型号为475轴上螺钉大小不一样,图6b是安装完后的样子。图6安装电机固定支架到上甲板图6b安装完成后的上甲板7.用2颗#4–1/4英寸螺钉,如图7中一样把6个支撑件安装到上甲板上。图7b是安装完成后的样子。图7安装支撑件到上甲板图7b安装好电机固定支架和支撑件的上甲板第四章安装下甲板8.用8颗#4–½英寸的螺钉,1/4”的尼龙支柱,平垫,弹垫和螺母,把3个电机控制器安装到下甲板上,如图8所示,安装时注意两个电机控制器的朝向。让两个控制器的电机控制输出端口相邻,这样一个控制器的输出端口可分别设置为0到15,另一个的输出端口可分别设置为16到30,就像电机控制器手册中提到的一样。同时在此连接所有电源线如图。图8安装两个电机控制器到下甲板图8b连接电源线

说明:给两个电机控制器供电有几种方式。例图8b中的供电方式是两个控制器使用同一个电源(控制器的电源输入线短接在一起)。你也可以使用两个独立的电源来分别给两个控制器的电供电,选用那种供电方式由你自己决定。9.用4颗#4-1/4的螺钉,弹垫和螺母,把电池固定支架安装到下甲板的另一侧,如图8c和图8d所示。图8c图8d10.像图9中所示一样,给下甲板上的6个铝柱周围涂上少量的润滑油。图911.在下甲板上6个铝柱上各套一各¼英寸SAE的平垫(平的一面朝下)。再在每个平垫朝上的一面涂少量润滑油,如图10所示。12.轻轻地把上甲板套到下甲板上,保证下甲板上6个铝柱与上甲板上电机固定支架上孔分别吻合,如图11所示。先确认6个铝柱分别套进支架上的孔后再打紧螺钉。当上下两甲板连接到一起后,把它翻转过来。图10图1113.用4颗#4-1/英寸4螺钉,把两个处于对称位置的支撑件固定在下甲板上如图12所示。在此时只固定2个支撑件是为了方便在以后的步骤中移开上甲板来连接伺服和电机控制器。图12图12b把组装好的这一部分放到你工作空间的一边,再继续下面的步骤。第五章腿部组装14.如图14所示,在腿前半部分的铝柱上涂少量的润滑油。15.在铝柱上套2个1/4英寸SAE的平垫(平的一面朝腿的后半部分)到铝柱上然后在上面的那个平垫上涂少量润滑油如图15所示。16.用2颗#4-5/1英寸6螺钉,平垫,弹垫和螺母,把电机固定指甲固定到腿的后半部分如图16所示。注意在打紧螺钉前确保支架上较大的孔和腿后半部分上的孔中心重合。图1617.用1颗#6-1/2螺钉,2个平垫和1个锁紧螺母,把图16中所示的组件和另一电机固定支架连接起来,如图17和图17b所示。不要把锁紧螺钉打得太紧,打紧后要能够让腿的后半部分有空间灵活地转动。图17图17b18.将一只型号为475HB的电机放到电机固定支架上,电机的输出轴靠近脚的下方可,如图18所示。图1819.用2颗#6-3/8英寸螺钉,弹垫和螺母,把脚的前半部分固定到电机上如图19和图19b所示。图19图19b20.图19c展示的是此时组装好的腿。图19c21.用1颗#6螺母、弹垫把橡皮脚安装到前面步骤重组装好的腿上,如图20所示。图2022.用2颗#4-1/4英寸螺钉,弹垫和螺母,把圆形的电机输出臂安装到腿的前半部分,如图21所示。该电机输出臂应该安装在腿前半部分弯曲部分的内侧。图2123.把装好的腿部和脚部组装起来如图22所示。在用螺钉固定腿和脚之前,得确认在把住腿部的情况下脚部应该能够灵活地在图22和图22b的位置间转动。

图22图22b24.用2颗#4-1/4英寸螺钉,弹垫和螺母,把腿的前半部分和后半部分联接起来,如图23和图23b所示。图23图23b重复第13步至第21步把其余的5条腿也装好。下图展示的就是组装好的腿。25.从联接器件小袋中取两个黄铜小球,用拇指把这两个小球分别压入如图24所示的联接件中。用#2-5/16英寸螺钉把小铜球固定在联接件中。注:把#2螺钉插入联接件的孔中,开始孔比螺钉稍微大一点点。图2426.把4/40英寸螺杆的一部分旋进联接件的尾端如图25。图2527.把另一半联接件旋到4/40英寸的螺杆上,完成联接件的联接如图26所示。注意两个#2-5/16螺钉的头像图26中一样朝同一个方向。重复第25步到第27步,完成剩下5个联接件的联接。图2628.用1颗#4-1/2内六角螺钉,黄铜取间支柱和锁进紧螺母,把在上一个步骤中接好的连接件连接到组装好的腿上,如图27所示。注意黄铜取间支柱和#2-5/16螺钉连接到腿上的方位。黄铜取间支柱平的一端应该贴着铝质的腿。为了在整条腿组装完毕后容易固定和调整#2-5/16英寸螺钉,它必须朝腿的外侧。(图27b)图27图27b重复第28步把剩下的连接做完。29.从645MG电机的包装盒里取处6个如图28所示的电机输出臂。用1/8英寸钻头在把下图所示位置的孔扩大。图2830.把上述的电机输出臂套到垂直方向的抬腿电机的输出轴上,然后逆时钟旋转电机直到电机在如图29所示的位置停下来。把电机的输出臂暂时先取下来,重复这个步骤把其余的5个垂直也调试好。图2931.用1颗 #4-1/2英寸黑色内六角螺钉,黄铜取间支柱和锁紧螺母,安装电机的输出臂至连接件的另一端如图30所示。重复这一步骤把其余的5个电机输出轴也联接好。图3032.用1颗#8-1.25英寸螺钉、2个弹垫,1个锁紧螺母,1个1/2英寸尼龙取间支柱,1个1/4英寸尼龙取间支柱,如图31所示把组装好的腿部安装到电机输出轴上。打紧#8锁紧螺钉,但不要打太紧以免影响电机的抬腿动作。1#8–1.25”Screw5#8–¼”NylonSpacer2#8–Washer6BackLeg3FrontLeg7#8-Washer4#8–1/2”NylonSpacer8#8LockNut图3133.用从475HB电机上取下来的螺钉,把电机输出臂固定到垂直电机的输出轴上,输出臂的位置在11点的角度,如图32所示。图32重复第32步和第33步,把其余的5条腿组装好。34.把组装好的甲板部分放到一些空盒子或者一些书上,这样在装其余5条腿的时候会更方便一些。第六章安装教学底板,联接电机到电机控制器并加装电源。35.用4颗#4-1/2英寸螺钉,1/4英寸尼龙取间支柱,平垫、弹垫和螺母,把教学底板安装到上上甲板上的狭槽间,联接电机控制器的到教学底板的X15插座上,如图33所示。36.从电机控制器0输出断口开始,把腿上所有水平方向的电机连接到偶数编号的端口上,把所有垂直抬腿用的电机连接到电机控制器的奇数编号端口上,控制器上的输入输出端口编号为0-15。(参考图35)如果电机上电缆不够长可以用提供的延长电缆线。注:为了让连接电机到电机控制器更容易,取下在第19页第11步中临时装在两个相对支柱上的4颗#4-1/4螺钉,螺钉取下后抬起上甲板慢慢向左或者向右移动上甲板使得容易在控制器上拔插电缆。你也可以取下那两根在相对位置的支柱,这样你的手就可以在两个甲板之间连接电缆。37.从连接在第一个电机控制器port0和port1端口上的第一条腿开始,用12英寸的延长电缆从port16开始沿逆时钟方向把脚上的电机连接到第2块电机控制器上,参考图35b。图35b第2个控制器上以16开始编号38.用2扎带,把6个脚上电机的输出电缆固定在腿的后半部分如图36所示。图3639.用扎带把6条腿中每条腿上3个电机的输出电缆固定在下甲板上的狭槽上,如图37所示。注意在拉紧扎带之前要确认腿能够灵活地在左侧和右侧上各活动90度角。40.如果之前在连接电机电缆到电机控制器的时候移去了上甲板,这时得把上甲板重新安装回来。在用2颗#4-1/4英寸螺钉连接上、下甲板之间的支柱前,注意6条腿都分别套在下甲板上的铝柱上了。编程程序“NomadWalkingDemo.bsp”有两个目的:1、在运动脉冲给定之前让“流浪者”所有的腿都处处在正确物理位置。2.允许用户通过标准的无线收发器由LCD模块或无线遥控来控制“流浪者”的动作次序。•可以通过访问我们的网站()来获得这个程序的最新版本,同时你也可以从我们网站上获取其他我们已经为“流浪者”编制的新程序。•注意在通过运行程序“Nomad_Walking_Demo.bsp”使用无线控制之前先运行程序“Nomad_RC_Test.bsp”。•在试图下载程序操作“流浪者”之前你得先阅读并完全的理解程序中注释。预编程序列表在下载运行程序“Nomad_walking_Demo.bsp之前,请仔细阅读下面几点。·所有电机都连接到了电机控制器正确的输出端口上。·没有电机的输出电缆纽绞或影响腿在整个范围内的运动。·电机控制器已正确连接也已按照用户手册上的说明正确地连接到了教学板上。·控制器已经上电并已经开启电源。·电机控制有独立电源供电,该电源和给教学板供电的电源相互独立。·教学板有自己的电源,且电源已经开启。·LCD显示模块已经正确地接到教学板上,显示亮度调整适当以便嫩看清LCD屏幕上显示的字符。(注意:字符只在程序下载时显示一次)确定腿的初始位置1.下载程序Nomad_Walking_Demo.bsp。2.确认在运行“Nomad_Walking_Demo.bsp”程序后,垂直方向抬腿的电机及其上面的电机输出轴向上直指12点的位置,足上电机使足和地面垂直,如果不是这样将影响到“流浪者”的正确动作。参考图38和图39。如果需要做调整,只要把固定电机输出轴的螺钉取下,然后顺时钟或逆时钟转动电机到适当位置即可。3.腿调整好后,就可以用LCD模块来选择“流浪者”的步行速度和方向。阅读程序的注释部分理解LCD模块操作方法。图38图39转弯和行走程序–“Nomad_Walking_Demo.bsp”'----[Nomad_Walking_Demo.bsp]-----------------------------------------'{$STAMPBS2p}'{$PBASIC2.5}''File.......Nomad_Walking_Demo.bsp'Purpose....NomadRCand/orLCDAppModcontrol.'Author.....CustCrawlerInc.(MikeGebhard)'E-mail.....support@'Started....10February2005'Updated....''Hardware'(1)NomadHDATSRoboticKit'(1)ParallaxBoardofEducation'(1)ParallaxBS2pModule'(1)ParallaxServoController(PSC)'(1)ParallaxLCDAppMod'(1)RadiocontrollerTx/RxSystem(optional)''------------------------------------------------'GettingStarted'------------------------------------------------'1.PhysicallyTunetheNomad'2.RuntheRC_Test.bs2program(optional-RCunitsoldseparatly)'3.RuntheNomadDemoprogram''------------------------------------------------'FirstTimeUse'------------------------------------------------'AnytimetheNomadDemoprogramisrunforthefirsttime,reset,orpoweredup'theNomadwilllowerandcenteritslegjoints.''UsetheLCDAppModto:'1.SelectSpeed'2.SelectDirection'3.Runselection(buttonD)''Ifyouareusingaradiocontroller.''1.SelectaspeedwithusingbuttonBontheLCDAppMod'2.PowertheTransmitterandreceiver'3.PressbuttonD(run)ontheLCDAppMod'4.MovetheTransmitterstick''Pleasereadtheradiocontrolsectionbelow'forreceivertoBOEconnectioninstructions.''------------------------------------------------'ParallaxLCDAppModControl'------------------------------------------------'LCDAppModButtons'A......Stop/Enterselectionmode'B......SelectSpeed(0-14)'C......Selectdirection(0-11)'D......Run(enterselection)''BUTTONA'PressandholdbuttonAuntiltherobotstops.TheLCDwillthe'showcurrentspeedanddirectionsettings.''----------'|spdDir|'|000|'----------'ABCD'ButtonB'PressbuttonBtochangespeedsfrom0to3'0......Fastest(default)'1......Fast'2......Medium'3......Slow''ButtonC'ButtonCcontrolsdirectionfrom0to11where0is12O’clock.Ifyoufollowed'theassemblyguide12O’clockisthelegconnectedtoPSC1channels0,1,and16.''ButtonD'PressbuttonDtoaccept/runtheselectedspeedanddirectionsettings.''LCDAppModdisplay''TheLCDdisplaysthecurrentspeedanddirectionsettingsinselectionmode.'----------'|spdDir|'|000|'----------''TheLCDshowsthecurrentgaitsettingonline2and"Walking"online1while'therobotiswalking.'----------'|LCDMode|'|000|'----------''TheLCDshowsthecurrentgaitsettingonline2and"RCMode"online1while'therobotiswalkingunderRCcontrol.'----------'|RCMode|'|000|'----------'------------------------------------------------'RadioControl'------------------------------------------------'TheNomadisRCready.SimplyPlugyourRCreceiverintotheBS2pand'awayyougo.Theinstructionsbelowareforconnectinga'TowerHobbies6channelradiocontrolsystemtotheBOE.Your'receiverchannelsmightdiffer.Pleaserefertoyourreceiver's'instructionmanual.''WesuggestrunningtheNomad_RC_Test.bs2programbeforerunningthe'Nomadinradiocontrolmode.TheNomad_RC_Test.bs2programverifies'thatthereceiverisconnectedcorrectlytotheBOE.'/products/nomad.php?id=3'CONNECTIONS'Youwillneed4wirestoconnectthereceiver'totheBOE'sX5servoport(seeyourBOERevBdocumentation).'Soldering8HighDensityFemaleRS232Socketstotheends'offour20gagewiresworksgreat.''Connectthereceiver's:'1.Throttlesignalline(ch3)toX5Pin12(outsidepin)ontheBOE.'2.Throttleground(ch3)toX5Pin12(insidepin)ontheBOE'3.Ruddersignalline(ch4)toX5Pin13(outsidepin)'4.Rudderground(ch4)toX5Pin13(insidepin)ontheBOE''========================================================================='BOEX5andX4servoports'========================================================================='X5X4'|--------|--------||------|'Ground|cc|xx||5V|----'N/C|xx|xx||Reg|----'Signal|cc|xx|||----'|--------|--------||------|'12131415''TheDemoprogramisdesignedtodetectthepresenceofanRx'onPins14and15.OncedetectedsimplymovetheTxstickand'theNomadshouldrespond.Ifnotcheckyourconnections.'----[ProgrammingNotes]------------------------------------------------'''-----[PSCI/ODefinitions]---------------------------------------------PSCPIN15'PSCmodulebaudCON1021'2400baud'-----[RCI/ODefinitions]----------------------------------------------StickXPinPIN13'Left/Right(X)joystickRxCh4StickYPinPIN12'Up/Down(Y)joystickRxCh3EEPROM_BlockCON108'EEPROMBlocksize'-----[LCDI/ODefinitions]--------------------------------------------EPIN1'LCDEnable(1=enabled)RWPIN2'Read/WriteRSPIN3'RegSelect(1=char)LcdDirsVARDIRB'dirsforI/OredirectionLcdBusOutVAROUTBLcdBusInVARINBLcdClsCON$01'cleartheLCDLcdHomeCON$02'movecursorhomeLcdCrsrLCON$10'movecursorleftLcdCrsrRCON$14'movecursorrightLcdDispLCON$18'shiftcharsleftLcdDispRCON$1C'shiftcharsrightLcdDDRamCON$80'DisplayDataRAMcontrolLcdCGRamCON$40'CharacterGeneratorRAMLcdLine1CON$80'DDRAMaddressofline1LcdLine2CON$C0'DDRAMaddressofline2LcdScrollTmCON250'LCDscrolltiming(ms)'-----[LegConstants]---------------------------------------------------RaiseCON600LowerCON300CenterCON750'-----[Speedsettings]-------------------------------------------------TopSpeedCON$A'StartingRampspeedIncrSpeedCONTopSpeed-$2'LegLiftspeedspeedsCON$10'Numberofspeedssettings'-----[WalkingVariables]-----------------------------------------------stickXPosVARWord'Left/Right(X)joystickposnstickYPosVARWord'Up/Down(Y)joystickpositionptrEEPROMVARWord'GaitselectcharVARByte'charactersenttoLCDscanVARByte'loopcounterservoPositionVARByte(6)'ServoPositionservoAddrVARByte'ServoaddressesrampVARByte'RampusedinSEROUTpointerVARByte'pointertoscatchpadgaitCodeVARBytetempVARBytedirectionVARgaitCode.LOWNIBspeedVARgaitCode.HIGHNIBcounterVARNib'Count0to5idxVARNib'loopcounterbuttonsVARNibbtnAVARbuttons.BIT0'left-mostbuttonbtnBVARbuttons.BIT1btnCVARbuttons.BIT2btnDVARbuttons.BIT3'right-most'----[EEPROMData]------------------------------------------------------Msg1DATA"Crust",0Msg2DATA"Crawler",0Msg3DATA"Robotics",0Msg4DATA"Presents"Msg5DATA"The",0Msg6DATA"NOMAD",0NavDATA"SpdDir",0Msg7DATA"LCDMode",0Msg8DATA"RCMode",0'----[EEPROMData]------------------------------------------------------D1DATAWordCenter,WordLower,WordCenter,'StartStrokeAWordCenter+50,WordLower,WordCenter-50,WordCenter-70,WordLower,WordCenter-50,WordCenter,WordRaise,WordCenter-80,'MidResetBWordCenter-70,WordRaise,WordCenter+10,WordCenter+50,WordRaise,WordCenter+10,WordCenter,WordLower,WordCenter-50,'EndStrokeAWordCenter-70,WordLower,WordCenter+10,WordCenter+50,WordLower,WordCenter+10,WordCenter,WordLower,WordCenter-50,'StartStrokeBWordCenter-70,WordLower,WordCenter+10,WordCenter+50,WordLower,WordCenter+10,WordCenter,WordRaise,WordCenter,'MidResetAWordCenter+50,WordRaise,WordCenter+50,WordCenter-70,WordRaise,WordCenter-50,WordCenter,WordLower,WordCenter,'EndStrokeBWordCenter,WordLower,WordCenter-20,WordCenter,WordLower,WordCenter-20,$FFD2DATAWordCenter,WordLower,WordCenter,'StartStrokeAWordCenter+50,WordLower,WordCenter-10,WordCenter,WordLower,WordCenter-10,WordCenter-50,WordRaise,WordCenter,'MidResetBWordCenter-50,WordRaise,WordCenter,WordCenter,WordRaise,WordCenter-10,WordCenter-50,WordLower,WordCenter-50,'EndStrokeAWordCenter+25,WordLower,WordCenter+40,WordCenter+50,WordLower,WordCenter+40,WordCenter-50,WordLower,WordCenter,'StartStrokeBWordCenter-50,WordLower,WordCenter+50,WordCenter,WordLower,WordCenter-10,WordCenter,WordRaise,WordCenter,'MidResetAWordCenter+50,WordRaise,WordCenter-10,WordCenter,WordRaise,WordCenter-10,WordCenter,WordLower,WordCenter+50,'EndStrokeBWordCenter,WordLower,WordCenter,WordCenter+50,WordLower,WordCenter+40,$FF'HorizontalVerticalAnkleTuneDATAWord750,Word300,Word750,Word750,Word300,Word750,Word750,Word300,Word750,Word750,Word300,Word750,Word750,Word300,Word750,Word750,Word300,Word750,$FFPUT$0,$0,$4,$8,$6,$A,$2'HorizontallegaddressesPUT$6,$2,$6,$A,$8,$0,$4'inscratchpadramPUT$C,$4,$8,$0,$A,$2,$6PUT$12,$6,$A,$2,$0,$4,$8PUT$18,$8,$0,$4,$2,$6,$APUT$1E,$A,$2,$6,$4,$8,$0Initialize:GOSUBInitialize_LCD'InitLCDGOSUBCrustCrawler_Logo'WriteCCLogochar=LcdCls'ClearScreenGOSUBWrite_LCD_CommandGOSUBLCD_Write_Nav'WritenavigationstringgaitCode=$80'InitgaitCodecounter=0'InitcounterGOSUBLCD_Write_Speed'WriteSpeedGOSUBLCD_Write_Direction'WriteDirectionramp=$C'InitrampptrEEPROM=Tune'CenterandlowerlegsGOTOWalking_Engine'PositionlegsParse_GaitCode:'Getspeedanddirectioncounter=0'fromgaitCodeIF(direction//2)=0THENptrEEPROM=D1ELSEptrEEPROM=D2ENDIFpointer=(direction/2)*6'pointertoscratchpadramramp=speed+TopSpeed'Setrampspeed'DEBUGHEX?gaitCode,CR,HEX?pointer,CR,HEX?rampWalking_Engine:READptrEEPROM,servoPosition(0),servoPosition(1),servoPosition(2),servoPosition(3),servoPosition(4),servoPosition(5)DOWHILE(servoPosition(0)<>$FF)'loopwhilenot$FFGETcounter+pointer,servoAddr'gethorizontaladdressGOSUBWrite_PSC'writetopsccounter=(counter+1)//6'incrcounterLOOP'-----[Decisions]-------------------------------------------------------Check_First_Run:'FirstrunIF(ptrEEPROM-36)=TuneTHENGOTOSelect_Speed_DirectionENDIFCheck_ButtonA_Press:'CheckforbuttonapressGOSUBLCD_Get_ButtonsIFbtnA=1THENGOTOSelect_Speed_DirectionENDIFCheck_RC_Power:'CheckforRxsignalGOSUBGet_StickIFstickXPos=0THEN'GOTOCheck_RC_Power'Un-commentforRConlymodeGOSUBLCD_Write_Walking'Write"Walking"onLCDGOTOParse_GaitCodeELSEGOTOGet_gaitCode_LowNib'ConvertRxdatatogaitCodeENDIFEND'-------------------------------------------------------------------------Write_PSC:SEROUTPSC,Baud,["!SC",servoAddr,ramp,servoPosition(0),servoPosition(1),CR]ramp=ramp-TopSpeedservoAddr=(servoAddr+1)SEROUTPSC,Baud,["!SC",servoAddr,ramp,servoPosition(2),servoPosition(3),CR]ramp=ramp+TopSpeedservoAddr=((servoAddr-1)/2)+1651SEROUTPSC,Baud,["!SC",servoAddr,ramp,servoPosition(4),servoPosition(5),CR]ptrEEPROM=ptrEEPROM+6READptrEEPROM,servoPosition(0),servoPosition(1),servoPosition(2),servoPosition(3),servoPosition(4),servoPosition(5)RETURN'-----[LCDSubroutines]-------------------------------------------------Select_Speed_Direction:'SelectspeedanddirectionGOSUBLCD_Write_NavDOWHILEbtnD=0'DowhileDnotpressedGOSUBLCD_Get_ButtonsIFbtnB=1THEN'Speedsettingspeed=(speed+1)//speedsGOSUBLCD_Write_Speed'WritespeedtoLCDENDIFIFbtnC=1THEN'Directionsettingdirection=(direction+1)//12GOSUBLCD_Write_Direction'WritedirectiontoLCDENDIFLOOPGOSUBLCD_Write_Walking'Write"Walking"GOTOParse_GaitCodeLCD_Get_Buttons:LcdDirs=%0000'makeLCDbusinputsbuttons=%1111'assumeallpressedFORscan=1TO10buttons=buttons&LcdBusIn'makesurebuttonheldPAUSE7'debounce10x5msNEXTLcdDirs=%1111'returnbustooutputsRETURNLCD_Put_String:DOREADptrEEPROM,char'ReaddataatEEPROMaddressIF(char=0)THENEXIT'0=EndofEEPROMStringGOSUBWrite_LCD_Char'WritecharactertoLCDptrEEPROM=ptrEEPROM+1'IncrementEEPROMpointerLOOPRETURNWrite_LCD_Command:'LowRS=LCDdirectivelikeLCDCMDE,charRETURNWrite_LCD_Char:'HIGHRS=WriteacharacterLCDOUTE,0,[char]RETURNLCD_Write_Speed:char=LcdLine2+0'WritespeedtoLCDGOSUBWrite_LCD_Commandtemp=speed/10'ConverttoASCIIchar=temp+48GOSUBWrite_LCD_Charchar=LcdLine2+1GOSUBWrite_LCD_Commandtemp=speed//10char=temp+48GOSUBWrite_LCD_CharRETURNLCD_Write_Direction:'WriteDirectiontoLCDchar=LcdLine2+5GOSUBWrite_LCD_Commandtemp=direction/10'ConverttoASCIIchar=temp+48GOSUBWrite_LCD_Charchar=LcdLine2+6GOSUBWrite_LCD_Commandtemp=direction//10char=temp+48GOSUBWrite_LCD_CharRETURNLCD_Write_Nav:char=LcdLine1+0GOSUBWrite_LCD_CommandptrEEPROM=Nav'PointtoNavGOSUBLCD_Put_String'WritestringRETURNLCD_Write_Walking:char=LcdLine1+0GOSUBWrite_LCD_CommandptrEEPROM=Msg7'Pointtomessage7GOSUBLCD_Put_String'WritestringRETURNLCD_Write_RC_Mode:char=LcdLine1+0GOSUBWrite_LCD_CommandptrEEPROM=Msg8'Pointtomessage8GOSUBLCD_Put_String'WritestringRETURNCrustCrawler_Logo:'DispalyCClogoptrEEPROM=Msg1'Pointtomessage1GOSUBLCD_Put_String'Writestringchar=LcdLine2+0'GotoLine2GOSUBWrite_LCD_Command'WritecommandptrEEPROM=Msg2'Pointtomessage2GOSUBLCD_Put_String'WritestringPAUSE2000'wait2secs'char=LcdCls'ClearScreen'GOSUBWrite_LCD_Command'ptrEEPROM=Msg3'Pointtomessage3'GOSUBLCD_Put_String'Writestring'char=LcdLine2+0'GotoLine2'GOSUBWrite_LCD_Command'Writecommand'ptrEEPROM=Msg4'Pointtomessage4'GOSUBLCD_Put_String'Writestring'PAUSE2000char=LcdClsGOSUBWrite_LCD_CommandptrEEPROM=Msg5'Pointtomessage5GOSUBLCD_Put_String'Writestringchar=LcdLine2+0'GotoLine2GOSUBWrite_LCD_Command'WritecommandptrEEPROM=Msg6'Pointtomessage6GOSUBLCD_Put_String'WritestringPAUSE2000RETURNInitialize_LCD:LCDCMDE,%00110000:PAUSE5'8-bitmodeLCDCMDE,%00110000:PAUSE0LCDCMDE,%00110000:PAUSE0LCDCMDE,%00100000:PAUSE0'4-bitmodeLCDCMDE,%00101000:PAUSE0'2-linemodeLCDCMDE,%00001100:PAUSE0'nocrsr,noblinkLCDCMDE,%00000110'inccrsr,nodispshiftchar=LcdCls'ClearscreenGOSUBWrite_LCD_CommandRETURN'-----[RC]--------------------------------------------------------------Get_gaitCode_LowNib:GOSUBLCD_Write_RC_Mode'Write"RCMode"toLCDGOSUBGet_Stick'ConvertstickpositionstoSELECTstickYpos'gaitCodeCASE<1700SELECTstickXPosCASE>2200gaitCode.LOWNIB=$1CASE<1800gaitCode.LOWNIB=$BCASEELSEgaitCode.LOWNIB=$0ENDSELECTCASE<1950SELECTstickXPosCASE>2200gaitCode.LOWNIB=$2CASE<1800gaitCode.LOWNIB=$ACASEELSEgaitCode.LOWNIB=$FENDSELECTCASE<2200SELECTstickXPosCASE>2200gaitCode.LOWNIB=$3CASE<1800gaitCode.LOWNIB=$9CASEELSEgaitCode.LOWNIB=$FENDSELECTCASE<2450SELECTstickXPosCASE>2200gaitCode.LOWNIB=$4CASE<1800gaitCode.LOWNIB=$8CASEELSEgaitCode.LOWNIB=$FENDSELECTCASE<2700SELECTstickXPosCASE>2450gaitCode.LOWNIB=$5CASE<1950gaitCode.LOWNIB=$7CASEELSEgaitCode.LOWNIB=$6ENDSELECTCASEELSEgaitCode.LOWNIB=$FENDSELECTIFgaitCode.LOWNIB=$FTHEN'NeutralGOTOGet_gaitCode_LowNibENDIFGOSUBLCD_Write_Direction'WritedirectiontoLCDGOTOParse_GaitCodeGet_Stick:PULSINStickXPin,1,stickXPos'ReadjoystickpositionsPULSINStickYPin,1,stickYPos'fromtransmitterP13,P12RETURNR/C测试程序–Nomad_RC_Test.bsp程序“Nomad_RC_Test.bsp”对于你确认所有R/C设备是否正确连接到教学板上很有帮助。'----[Nomad_RC_Test.bsp]-----------------------------------------'{$STAMPBS2p}'{$PBASIC2.5}''File.......Nomad_RC_Test.bsp'Purpose....TestRadioControllerconnections'Author.....CrustCrawlerInc.(MikeGebhard)'E-mail.....support@'Started....10February2005'Updated....''Hardware:'(1)ParallaxBasicStampPModule'(1)ParallaxBOE'(1)TowerHobbies6channelFMRadioControlSystemorequivalent.''UsethiscodetotroubleshootconnectingaRadioControlunit'toaParallaxBOE/BasicStamp.Itacceptsreadingsfromaradio'controlreceiverandconvertsthereadingtoabytevalue(gaitCode).'Thisprogramalsodetectsifthetransmitteristurnonoroff'andisdesignedtobeusedwithall3DOFwalkingcode.''========================================================================='GettingStarted'========================================================================='CONNECTIONS'Youwillneed4wirestoconnectthereceiver'totheBOE'sX5servoport(seeyourBOERevBdocumentation).'Soldering8HighDensityFemaleRS232Socketstotheends'offour20gagewiresworksgreat.''Connectthereceiver's:'1.Throttlesignalline(ch3)toX5Pin12(outsidepin)ontheBOE.'2.Throttleground(ch3)toX5Pin12(insidepin)ontheBOE'3.Ruddersignalline(ch4)toX5Pin13(outsidepin)'4.Rudderground(ch4)toX5Pin13(insidepin)ontheBOE''========================================================================='BOEX5andX4servoports'========================================================================='X5X4'|--------|--------||------|'Ground|cc|xx||5V|----'N/C|xx|xx||Reg|----'Signal|cc|xx|||----'|--------|--------||------|'12131415''========================================================================='ProgramOperationOverview'========================================================================='TheGet_StickroutineusesthePULSINcommand'tomeasuresthepulsewidthonpin12(Y)StickYPin'andpin13(X)StickXPin.Thisdataisstoredin'thestickYPosandstickXPosvariablesrespectively.''StickXPosValues'LeftRight'1465-->2610''StickYPosValues'Top1580'|'|'Down2525''StickXPosandStickXPosvariablesareconvertedtoagaitCode.'TheresultsaredisplayedontheDEBUGscreenwhereagaitCodeof'0is12O'clock.AgaitCodeofFisneutralorstop.''========================================================================='DebugOutputvs.StickPosition'=========================================================================''|-----|-----|-----|-----|-----|'|B|0|0|0|1|'|-----|-----|-----|-----|-----|'|A|F|F|F|2|'|-----|-----|-----|-----|-----|'|9|F|F|F|3|'|-----|-----|-----|-----|-----|'|8|F|F|F|4|'|-----|-----|-----|-----|-----|'|7|6|6|6|5|'|-----|-----|-----|-----|-----|'----------

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论