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















