Monday, February 18, 2008

scrpiting for baiscstamp

' {$STAMP BS2}
' {$PBASIC 2.5}

state VAR WORD
counter VAR WORD
led_counter VAR WORD


INPUT 4 'switch wipe open
INPUT 5 'switch wipe close
INPUT 9 'sensor inside
INPUT 10 'sensor outside
INPUT 11 'sensor outside
INPUT 12 'sensor outside

OUTPUT 13
OUTPUT 0
OUTPUT 1

check:
IF IN4 = 1 THEN s_0 'already opened
IF IN5 = 1 THEN s_1 'already closed
GOTO check

s_0:
state = 0 'already opened
GOSUB s
GOTO main

s_1:
state = 1 'already closed
GOSUB s
GOTO main

main:
led_counter = 0
IF IN10 = 0 AND IN11 = 0 AND IN12 = 0 AND state = 1 THEN open
IF IN9 = 1 AND IN10 = 1 AND IN11 = 1 AND IN12 = 1 AND state = 0 THEN w
GOTO main


w:
FOR counter = 1 TO 10
IF IN9 = 0 OR IN10 = 0 OR IN11 = 0 OR IN12 = 0 THEN main
OUT1 = 1 'testing light
PAUSE 500
OUT1 = 0
PAUSE 500
NEXT
GOTO close



open:
led_counter = led_counter + 1
IF IN4 = 1 THEN s_0
PULSOUT 13, 1000
PAUSE 20
IF led_counter=10 THEN o_led_on
IF led_counter=20 THEN o_led_off
GOTO open

o_led_on:
OUT0 = 1
GOTO open

o_led_off:
OUT0 = 0
led_counter = 0
GOTO open




close:
led_counter = led_counter + 1
IF IN5 = 1 THEN s_1
PULSOUT 13, 500
PAUSE 20
IF led_counter=10 THEN c_led_on
IF led_counter=20 THEN c_led_off
GOTO close

c_led_on:
OUT0 = 1
GOTO close

c_led_off:
OUT0 = 0
led_counter = 0
GOTO close



s:
OUT0 = 0
PULSOUT 13, 696
PAUSE 20
RETURN

No comments: