Q$tZl]#){gVte_@YqROn1Rev1-On2Rev2On3i|ENGAGEMotorOnMotorRevG@DisplayjpiNEXlT ELSEPRINTKdelay ptinytupdateTHENCALLTRUE DisplauGcountPORT6cfinishstartpresultRDIVSHAREDcREALAfnarfnarg@ReadPortOUTPORTnVx=PortInGe THENupdateLengthTowerPolaryzLoadLoad.xLoad.yiLoad.z@ Calclength4 incrementOS( NewLengthDoLengthQDriveMotorsb@ DriveMotors@DoMotorsBin}DoMotordeltaReadInREPEATFALSECLOSEDSwClosedSwOpen@GetCount LOOPUNTILNearSide5FarSide_NewLengtLowSide.HighSidef halfincrementhalfinch=inchincdeltaeStatusStatlev@AllStopDfD DVDGD(DDpD#lPERT! @ #k> #gx #d #d #d #d }dd}dd}dd!}2|2 G d}dd} }dd}dd}  b} } - # 6 6= {ddVFd {d { {f {dd!Vrd { {fmEmpty" G === Define tower locations=ddddd)dd)d dd d)d d)d d)d d)d ddd)dd)d$ === Define starting point of loadd d d  {ddVL { { {( { {fV -d 7F   d  tm1"= dtd d m2"= d td  d m3"= d td  d m4"= dtd d m!"= dtd d m@"= d td  d m#"= d td  d m$"= dtd d m "= 7f m User reset G d ma"=    d mz"=  w  d ms"=    d mx"=  w  d md"=    d mc"=  w  d mg"= 7f 7V 7 7G 7R7p td=  === Display Only 7d =  === Motors engage & display 7V 7R mq"qd| 8Display84vsm === MOTOR CONTROL SYSTEM === ddV$mMotor #" m " ]m(On) Im(Off)  ]m (Reverse) Im (Forward)  ]m(*)"Im( )" f ddV    ( m Line length #" m : Actual ( m ) Target ( m)" fmLast binary out value was : bmLoad is located at ( m," m," m)"V #mStatus messages : G # -w 6 6dnad 6I   6 6PmCounts per second :" 6V -d d Q 80 ReadPort0vp d d d d d!ddxW d!e  _ _e ]d _Id _  _q]d  _  d d fQ  DoLength0rX(  wnd v  wnd v  wnd vO (Q  DriveMotors0vG d  5 {ddV { {w t {7 ttp 5?+" New length is longer, move motor forward 0F@ {7@ {  {@@70 { { 5wn_nc 5x>0F@ {7@ { w {@@70 { { 5ncnc"R {fQ   DoMotors0vVd b {ddV` {]V bd {dwnv b {f {ddV {] bd {d nv b {f  b d d d dmC= " Q  GetCount8v 7p da Counter is sitting on switch 4 Status = "Waiting for counter to move off switch" CALL DisplayiF 8p Motor moving so wait untilt dc counter moves off switchoPF8p Wait until we get next countf dcmGot a count on channel # Q GQ  AllStop0Pvf {ddVHd {d { {fQ