Conditions¶
A condition (Port2 high) causes the state ‘Port2Light’ to be skipped without waiting for the timer to expire.
1from bpod_core.fsm import StateMachine
2
3fsm = StateMachine()
4
5fsm.set_condition(
6 index=2,
7 channel='Port2',
8 value=True, # condition is true when Port2 is high
9)
10
11fsm.add_state(
12 name='Port1Light',
13 timer=1,
14 transitions={'Tup': 'Port2Light'},
15 actions={'PWM1': 255},
16)
17fsm.add_state(
18 name='Port2Light',
19 timer=1,
20 transitions={'Tup': 'Port3Light', 'Condition2': 'Port3Light'},
21 actions={'PWM2': 255},
22)
23fsm.add_state(
24 name='Port3Light',
25 timer=1,
26 transitions={'Tup': '>exit'},
27 actions={'PWM3': 255},
28)
1{
2 "states": {
3 "Port1Light": {
4 "timer": 1.0,
5 "transitions": {
6 "Tup": "Port2Light"
7 },
8 "actions": {
9 "PWM1": 255
10 }
11 },
12 "Port2Light": {
13 "timer": 1.0,
14 "transitions": {
15 "Tup": "Port3Light",
16 "Condition2": "Port3Light"
17 },
18 "actions": {
19 "PWM2": 255
20 }
21 },
22 "Port3Light": {
23 "timer": 1.0,
24 "transitions": {
25 "Tup": ">exit"
26 },
27 "actions": {
28 "PWM3": 255
29 }
30 }
31 },
32 "conditions": {
33 "2": {
34 "channel": "Port2",
35 "value": true
36 }
37 }
38}
1states:
2 Port1Light:
3 timer: 1.0
4 transitions:
5 Tup: Port2Light
6 actions:
7 PWM1: 255
8 Port2Light:
9 timer: 1.0
10 transitions:
11 Tup: Port3Light
12 Condition2: Port3Light
13 actions:
14 PWM2: 255
15 Port3Light:
16 timer: 1.0
17 transitions:
18 Tup: '>exit'
19 actions:
20 PWM3: 255
21conditions:
22 2:
23 channel: Port2
24 value: true