'*****R2TAUPO ROBOT RUNNING PROGRAM '*****MODIFIED REVISION WITH SPEECH ROUTINES '*****INFRARED PROXIMTY SENSOR FOR OBJECT DETECTION '*****ON PIN 0 '*****SPEAKER OUTPUT ON PIN 3 '*****HEAD MOTOR PIN 5 '*****LEFT MOTOR PIN 7 '*****RIGHT MOTOR PIN 6 REV 1 NOV 10, 1999 '*****BY RCI COMPUTRONICS (ALL RIGHTS NOT IN MIND) '*****ADDITION OF LIGHT SENSOR REV 2 JAN 28,2000 '*****setup all variables here****** x var word maxpos con 1100 'max position midpos con 675 'neutral position minpos con 300 'min position c con 300 'time to get servo in position b con 90 'time to delay for backup a con 110 'time delay for right 180 l con 75 'time delay for left 90 r con 55 'time delay for right 90 speaker con 3 'speaker on pin 3 of stamp ncount var word m var IN0 'motion input lite var IN1 'light input, when =1 light detected code var outh phon var byte 'phoneme codes indx var byte x=0 dirh = %10111111 start: '******this is the start of program******* indx=0 code=0 high 15 gosub sound9 gosub rst '****resets head******* morn: '******returns here from tired loop******* gosub wake if m=0 then hl '***If prox sensor tripped*** fl: '*****this is the forward loop indx=0 code=0 if lite=0 then tired '***using light sensor*** high 15 gosub fwd if m=0 then hl '***If prox sensor tripped*** goto fl lt: '***************MOTOR LEFT*************** gosub sound0 gosub iam gosub rst for x= 1 to l pulsout 6,minpos pulsout 7,minpos pause 10 next pause 500 goto fl return rt: '***************MOTOR RIGHT*************** gosub sound1 gosub getout gosub rst pause 50 for x= 1 to r pulsout 6,maxpos pulsout 7,maxpos pause 10 next pause 500 goto fl return af: '***************MOTOR RIGHT 180********* gosub sound1 gosub rst pause 50 for x= 1 to a pulsout 6,maxpos pulsout 7,maxpos pause 10 next pause 500 goto fl return fwd: '***************MOTOR FORWARD*************** for x= 1 to c if m=0 then hl pulsout 6,maxpos pulsout 7,minpos pause 10 next return bk: '***************MOTOR BACKWARD*************** gosub sound4 gosub wh for x= 1 to b pulsout 6,minpos pulsout 7,maxpos pause 10 next pause 500 gosub af return hl: '*********HEAD LEFT************ gosub sound3 pause 100 for x= 1 to c pulsout 5,maxpos pause 10 next if m=0 then hr if m=1 then lt return hr: '********HEAD RIGHT*********** gosub sound3 for x= 1 to c pulsout 5,minpos pause 10 next hl1: if m=0 then mid if m=1 then rt return mid: '********HEAD MID************* gosub sound3 for x= 1 to c pulsout 5,midpos pause 10 next if m=0 then bk if m=1 then fl return rst: '********HEAD RESET*********** for x= 1 to c pulsout 5,midpos pause 10 next code=0 indx=0 return goto start '****return to the beginning******* sound0: pause 10 freqout speaker,140,4200 'this makes a bunch of sounds freqout speaker,90,3600 freqout speaker,90,3800 freqout speaker,30,3300 freqout speaker,30,2800 freqout speaker,30,2400 freqout speaker,140,4200 freqout speaker,90,2000 freqout speaker,70,4200 return sound1: pause 10 freqout speaker,40,4400 freqout speaker,20,3600 freqout speaker,60,3500 freqout speaker,30,4200 freqout speaker,10,3800 freqout speaker,90,3000 freqout speaker,10,2400 freqout speaker,40,4300 freqout speaker,50,3800 freqout speaker,20,2200 freqout speaker,150,0 return sound2: pause 10 freqout speaker,100,2800 freqout speaker,200,2400 freqout speaker,140,4200 freqout speaker,30,2000 return sound3: pause 10 freqout speaker,60,5200,4000 freqout speaker,30,4200 freqout speaker,60,5200,4000 freqout speaker,30,4200 freqout speaker,100,0 return sound4 freqout speaker,800,391 freqout speaker,800,588 freqout speaker,150,521 freqout speaker,150,495 freqout speaker,150,439 freqout speaker,800,781 freqout speaker,800,588 freqout speaker,150,521 freqout speaker,150,495 freqout speaker,150,439 freqout speaker,800,781 freqout speaker,800,588 freqout speaker,150,521 freqout speaker,150,495 freqout speaker,150,521 freqout speaker,800,439 return sound9: gosub chirp gosub sound0 freqout speaker,150,0 for ncount = 1 to 2 gosub chirp pause 10 next return chirp: pause 10 freqout speaker,14,4500 freqout speaker,11,4200 freqout speaker,14,4500 freqout speaker,11,4200 freqout speaker,14,4500 freqout speaker,11,4200 freqout speaker,14,4500 freqout speaker,11,4200 freqout speaker,150,0 return co: indx=0 code=0 high 15 return talk: code=phon high 15 pause 150 indx=indx+1 return getout 'I'VE GOT TO GET OUT OF HERE lookup indx,[06,19,35,01,34,24,13,01,13,31,01,34,07,13,01,32,13,01,23,35,01,27,19,60,64],phon gosub talk if phon=64 then co goto getout iam 'I AM LOST lookup indx,[ 01,01,06,19,01,01,26,16,01,01,45,23,55,17,64],phon gosub talk if phon=64 then co goto iam wh 'WHERE AM I lookup indx,[ 01,01,48,07,47,01,26,16,01,06,19,64],phon gosub talk if phon=64 then co goto wh ready lookup indx, [51,39,07,33,19,64],phon gosub talk if phon=64 then co goto ready tired 'I AM TIRED lookup indx,[ 01,01,06,19,01,01,26,16,01,01,13,24,6,60,52,33,64],phon gosub talk if phon=64 then nappy goto tired wake 'GOOD MORNING lookup indx,[ 01,01,34,30,33,01,01,16,58,51,56,12,44,64],phon gosub talk if phon=64 then co goto wake nappy if lite=0 then nappy indx=0 code=0 high 15 goto morn