Monday, February 18, 2008

Basic Stamp


' {$STAMP BS2}



motor_counter VAR Word
motor14_counter VAR Word
chair_timeout VAR Word



chair1_out_time VAR Word
chair2_out_time VAR Word
chair3_out_time VAR Word



chair1_in_time VAR Word
chair2_in_time VAR Word
chair3_in_time VAR Word



chair_out_spd VAR Word
chair_in_spd VAR Word



'for chairs
INPUT 0
INPUT 1
INPUT 2



'for detecting elderly's card
INPUT 4



OUTPUT 10
OUTPUT 11
OUTPUT 12



OUTPUT 14
OUTPUT 15



initialize:
chair1_out_time = 320
chair2_out_time = 400
chair3_out_time = 180



chair1_in_time = 400
chair2_in_time = 700
chair3_in_time = 900



'750 - stop
chair_out_spd = 600
chair_in_spd = 900



FOR motor14_counter=1 TO 50
PULSOUT 14, 750
PAUSE 20
NEXT
GOTO main_1



main_1:
IF IN4=0 THEN chair_1_out_rel
GOTO main_1



chair_1_out_rel:
motor_counter = 1
chair_timeout = 1
OUT10 = 1
IF IN4=1 THEN chair_1_out
GOTO chair_1_out_rel



chair_1_out:
motor_counter = motor_counter + 1
PULSOUT 15, chair_out_spd
PAUSE 20
IF motor_counter>chair1_out_time THEN main_2
GOTO chair_1_out



main_2:
'chair_timeout = chair_timeout + 1
'IF chair_timeout>300 THEN chair_1_in
IF IN0=0 THEN main_3
GOTO main_2



main_3:
OUT10 = 1
IF IN4=0 THEN chair_2_out_rel
IF IN0=1 THEN chair_1_in
motor_counter = 1
GOTO main_3



chair_1_in:
motor_counter = motor_counter + 1
PULSOUT 15, chair_in_spd
PAUSE 20
IF motor_counter>chair1_in_time THEN main_1
GOTO chair_1_in



chair_2_out_rel:
IF IN4=1 THEN chair_2_out
motor_counter = 1
GOTO chair_2_out_rel



chair_2_out:
motor_counter = motor_counter + 1
PULSOUT 15, chair_out_spd
PAUSE 20
IF motor_counter>chair2_out_time THEN main_4
GOTO chair_2_out



main_4:
IF IN1=0 THEN main_5
GOTO main_4



main_5:
OUT11 = 1
IF IN4=0 THEN chair_3_out_rel
IF IN0=1 AND IN1=1 THEN chair_2_in
motor_counter = 1
GOTO main_5



chair_2_in:
motor_counter = motor_counter + 1
PULSOUT 15, chair_in_spd
PAUSE 20
IF motor_counter>chair2_in_time THEN main_3
GOTO chair_2_in



chair_3_out_rel:
IF IN4=1 THEN chair_3_out
motor_counter = 1
GOTO chair_3_out_rel



chair_3_out:
motor_counter = motor_counter + 1
PULSOUT 15, chair_out_spd
PAUSE 20
IF motor_counter>chair3_out_time THEN main_6
GOTO chair_3_out



main_6:
IF IN2=0 THEN main_7
GOTO main_6



main_7:
IF IN0=1 AND IN1=1 AND IN2=1 THEN chair_3_in
motor_counter = 1
GOTO main_7



chair_3_in:
motor_counter = motor_counter + 1
PULSOUT 15, chair_in_spd
PAUSE 20
IF motor_counter>chair3_in_time THEN main_1
GOTO chair_3_in



final_move:
FOR motor14_counter=1 TO 50
PULSOUT 14, 750
PAUSE 20
NEXT
GOTO main_1



No comments: