' {$STAMP BS1} ' {$PBASIC 1.0} ' -----[ I/O Definitions ]------------------------------------------- ' Serial connections SYMBOL PIR=PIN7 SYMBOL RC4sio = 6 SYMBOL uMP3a = 5 SYMBOL uMP3b =4 SYMBOL SoldierEyes=3 SYMBOL SlaveProp1 = 2 SYMBOL SoldierArm = 1 SYMBOL CannonValve = 0 ' Devices on the RC4 controller SYMBOL RC4Fog = 1 SYMBOL RC4FrSpeaker = 2 SYMBOL RC4BkSpeaker = 3 SYMBOL RC4Splash = 4 ' RC4 Settings SYMBOL RC4baud = OT2400 SYMBOL RC4addr = %11 SYMBOL IsOn = 1 SYMBOL IsOff = 0 SYMBOL COUNTER=W2 SYMBOL char =B2 SYMBOL TriggerDelay=3000 ' delay between motion detected and start SYMBOL Resettime=30000 ' delay before prop reset SYMBOL FireDuration=500 ' time to hold cannon air valve open(firing) SYMBOL OtherShow=1000 ' time to wait for show on slaved prop1 ' -----[ Initialization ]-------------------------------------------- SEROUT RC4sio, RC4baud, ("!RC4", RC4addr, "X") ' turn off all relays PAUSE 10000 ' pause 10 seconds (wait for uMP3 to initialize) Check_uMP3: SEROUT uMP3a, T2400, (13) SERIN uMP3b, T2400, char DEBUG "in loop",char IF char <> ">" THEN Check_uMP3 SEROUT uMP3a, T2400, ("PC F /CANNON/YANKEES.MP3",13) SERIN uMP3b, T2400, char DEBUG char DEBUG CLS ' Clear DEBUG Screen FOR counter = 30 TO 0 STEP -1 ' Wait another 30 Seconds For PIR Warm-Up DEBUG "IR Ready in:", counter 'print how much time left PAUSE 1000 ' Display Counter Every Second DEBUG CLS ' Clear DEBUG Screen NEXT SEROUT uMP3a, T2400, (13) counter = 0 ' Clear Counter Variable StartAgain: DEBUG "Waiting for Motion...\n" ' Display Waiting Message ' -----[ Program Code ]----------------------------------------- ' background songs ' SEROUT RC4sio, RC4baud, ("!RC4", RC4addr, "R", RC4FrSpeaker, IsOn) ' Front Speaker on ' SEROUT uMP3a, RC4baud, ("PC F /SOUNDS/SONGS.MP3", 13) LOW SoldierArm ' soldier arm in resting position HIGH CannonValve ' cannon valve closed - filling air tank LOW SlaveProp1 WaitForMotion: PAUSE 25 counter = counter + 50 * PIR IF counter < 250 THEN WaitForMotion ' Motion Detected? DEBUG "TRIPPED...\n" ' motion detected PropSequence: ' PAUSE Triggerdelay ' SEROUT uMP3a, RC4baud, ("PC S", 13) ' Shut off songs ' HIGH SlaveProp1 ' trigger show on slaved controller ' PAUSE 100 ' LOW SlaveProp1 ' PAUSE OtherShow ' wait for queue after other show is ready ' SEROUT RC4sio, RC4baud, ("!RC4", RC4addr, "R", RC4FrSpeaker, IsOff) ' Front Speaker off DEBUG "eyes..." HIGH SoldierEyes SEROUT uMP3a, T2400, ("PC F /CANNON/YANKEES.MP3",13) PAUSE 4000 DEBUG "Arm down" HIGH SoldierArm DEBUG "Fog on\n" SEROUT RC4sio, RC4baud, ("!RC4", RC4addr, "R", RC4Fog, IsOn) ' start 3 seconds of smoke(fog) in barrel PAUSE 3000 DEBUG "Fog Off\n" SEROUT RC4sio, RC4baud, ("!RC4", RC4addr, "R", RC4Fog, IsOff) ' turn off smoke PAUSE 1000 DEBUG "Arm up, Fire" LOW SoldierArm ' soldier arm back up LOW CannonValve ' fire cannon PAUSE FireDuration HIGH CannonValve LOW SoldierEyes PAUSE 20000 SEROUT RC4sio, RC4baud, ("!RC4", RC4addr, "X") ' turn off all relays PAUSE Resettime counter =0 GOTO StartAgain