Below I provide code written in normally worded.
Please check the AUTO case, where the last ELSE IF was not implemented by the program when I pressed the STOP button
SWITCH (state)
case AUTO:
if relay_auto active,
state AA.
Else if PB_auto is pressed,
-activate relay_auto
-print lcd (0,1) "AUTO"
-state AA.
Else if PB_stop_auto is pressed,
-deactivate relay_forward,
-deactivate relay_reverse,
-activate relay_forward
-print lcd (12,1) "MoveUp "
-state STOP
case STOP:
if PB_ls1 is pressed
-deactivate relay_forward
-print lcd (12,1) "Top "
-deactivate relay_bvo
-activate relay_bvc
-print lcd (0,4) "BV:C"
-deactivate relay_auto
-state AUTO
case AA:
-deactivate relay_bvc
-activate relay_bvo
-print lcd (0,4) "BV:O"
-delay(2000) //open
- activate relay_reverse
-print lcd (12,1)"MoveDown"
- delay (7000) //down
- deactivate relay_reverse
-print lcd (12,1) "Bottom "
-activate relay_filling
-print lcd (12,1) "Filling "
- delay (2000) //filling
-deactivate_relay_filling
- activate relay_forward
-print lcd (12,1) "MoveUp "
- deactivate relay_empty
- state AB
case AB:
if relay_empty inactive
-state AB1
else if relay_empty active
-state AB2
case AB1: //naik2
if PB_ls2 is pressed
-deactivate relay_bvo
-activate relay_bvc
-print lcd (0,4) "BV:C"
-delay (2000) //bv close
-state AC
case AB2:
-if PB_ls2 is pressed
-deactivate relay_reverse
-activate relay_emptying
-print lcd (12,1) "Emptying"
-delay (2000) //emptying
-deactivate relay_emptying
-activate relay_forward
-print lcd (12,1) "MoveUp "
-state AC
case AC:
if relay_empty inactive
-state AC1
else if relay_empty active
-state AC2
case AC1:
if PB_ls1 is pressed
-deactivate relay_forward
-print lcd (12,1) "Top "
-state AD
case AC2:
if PB_ls1 is pressed
-deactivate relay_forward
-print lcd (12,1) "Top "
-deactivate relay_bvc
-activate relay_bvo
-print lcd (0,4) "BV:O"
-state AD
case AD:
if PB_ls3 is pressed
-activate relay_reverse
-print lcd (12,1) "MoveDown"
-activate realy_empty
-state AB
else if PB_ls4 is pressed
-state AUTO