Light Chasing

Follow the LED to proceed to the next state.

../../_images/light_chasing.svg
from bpod_core.fsm import StateMachine

fsm = StateMachine()

fsm.add_state(
    name='Port1Active1',
    transitions={'Port1_High': 'Port2Active1'},
    actions={'PWM1': 255},
)
fsm.add_state(
    name='Port2Active1',
    transitions={'Port2_High': 'Port3Active1'},
    actions={'PWM2': 255},
)
fsm.add_state(
    name='Port3Active1',
    transitions={'Port3_High': 'Port1Active2'},
    actions={'PWM3': 255},
)
fsm.add_state(
    name='Port1Active2',
    transitions={'Port1_High': 'Port2Active2'},
    actions={'PWM1': 255},
)
fsm.add_state(
    name='Port2Active2',
    transitions={'Port2_High': 'Port3Active2'},
    actions={'PWM2': 255},
)
fsm.add_state(
    name='Port3Active2',
    transitions={'Port3_High': '>exit'},
    actions={'PWM3': 255},
)
{
  "states": {
    "Port1Active1": {
      "transitions": {
        "Port1_High": "Port2Active1"
      },
      "actions": {
        "PWM1": 255
      }
    },
    "Port2Active1": {
      "transitions": {
        "Port2_High": "Port3Active1"
      },
      "actions": {
        "PWM2": 255
      }
    },
    "Port3Active1": {
      "transitions": {
        "Port3_High": "Port1Active2"
      },
      "actions": {
        "PWM3": 255
      }
    },
    "Port1Active2": {
      "transitions": {
        "Port1_High": "Port2Active2"
      },
      "actions": {
        "PWM1": 255
      }
    },
    "Port2Active2": {
      "transitions": {
        "Port2_High": "Port3Active2"
      },
      "actions": {
        "PWM2": 255
      }
    },
    "Port3Active2": {
      "transitions": {
        "Port3_High": ">exit"
      },
      "actions": {
        "PWM3": 255
      }
    }
  }
}
states:
  Port1Active1:
    transitions:
      Port1_High: Port2Active1
    actions:
      PWM1: 255
  Port2Active1:
    transitions:
      Port2_High: Port3Active1
    actions:
      PWM2: 255
  Port3Active1:
    transitions:
      Port3_High: Port1Active2
    actions:
      PWM3: 255
  Port1Active2:
    transitions:
      Port1_High: Port2Active2
    actions:
      PWM1: 255
  Port2Active2:
    transitions:
      Port2_High: Port3Active2
    actions:
      PWM2: 255
  Port3Active2:
    transitions:
      Port3_High: '>exit'
    actions:
      PWM3: 255