Below is my script to move 2 servos through a routine 5 times started by pressing a switch. It works with the counter and no switch and it works with the switch and no counter. When I put the 2 together (switch and counter) I get an error 0x0080. Any help to remedy this problem would be great
wait_for_button_press
5 # start with a 5 on the stack
begin
dup # copy the number on the stack - the copy will be consumed by WHILE
while # jump to the end if the count reaches 0
# Move servo 0 180 deg and back (lift filter and set it back down)
500 delay
100 0 servo # 2.00 ms
500 delay
9000 0 servo
500 delay
# rotate servo 1 deg and back 3 times (twist filter back and forth)
1000 1 servo
500 delay
5000 1 servo
500 delay
1000 1 servo
500 delay
5000 1 servo
500 delay
1000 1 servo
500 delay
5000 1 servo
500 delay
1 minus # subtract 1 from the number of times remaining
repeat
# Returns 1 if the button is pressed, 0 otherwise.
sub button
2 get_position 500 less_than
return
# Waits for a button press, with debouncing.
# (Requires the BUTTON subroutine.)
sub wait_for_button_press
wait_for_button_open_10ms
wait_for_button_closed_10ms
return
# wait for the button to be NOT pressed for at least 10 ms
sub wait_for_button_open_10ms
get_ms # put the current time on the stack
begin
# reset the time on the stack if it is pressed
button
if
drop get_ms
else
get_ms over minus 10 greater_than
if drop return endif
endif
repeat
# wait for the button to be pressed for at least 10 ms
sub wait_for_button_closed_10ms
get_ms
begin
# reset the time on the stack if it is pressed
button
if
get_ms over minus 10 greater_than
if drop return endif
else
drop get_ms
endif
repeat