OiD-W
February 10, 2026, 2:47pm
1
Hi again!
I’m trying to get two motors to show up in the Webcontroller but i can only get one or the other to work.
I can’t find any examples of two motors being used in the Webcontroller.
Here is the code I’m using:
Commander command0 = Commander(Serial);
Commander command1 = Commander(Serial);
void doMotor0(char* cmd){command0.motor(&motor0, cmd);}
void doMotor1(char* cmd){command1.motor(&motor1, cmd);}
void setup() {
SimpleFOCDebug::enable(&Serial);
char motor0_id = 'L';
command0.add(motor0_id,doMotor0,"motor0");
char motor1_id = 'R';
command1.add(motor1_id,doMotor1,"motor1");
motor1.useMonitoring(Serial);
motor1.monitor_start_char = motor1_id;
motor1.monitor_end_char = motor1_id;
command1.verbose = VerboseMode::machine_readable;
motor0.useMonitoring(Serial);
motor0.monitor_start_char = motor0_id;
motor0.monitor_end_char = motor0_id;
command0.verbose = VerboseMode::machine_readable;
motor0.monitor_variables = _MON_TARGET | _MON_VEL | _MON_ANGLE | _MON_TARGET | _MON_VOLT_Q | _MON_VEL | _MON_ANGLE;
motor0.monitor_downsample = 10;
motor1.monitor_variables = _MON_TARGET | _MON_VEL | _MON_ANGLE | _MON_TARGET | _MON_VOLT_Q | _MON_VEL | _MON_ANGLE;
motor1.monitor_downsample = 10;
}
void loop() {
motor0.loopFOC();
motor1.loopFOC();
motor0.move(2);
motor1.move(2);
motor0.monitor();
motor1.monitor();
command0.run();
command1.run();
}
Is there anything I’m missing to have more than one motor?
Thanks
Hmm, are they discovered by the webcontroller?
Or you don’t see them at all?
Maybe try using “motor 0” and “motor 1” in the commander.add.
Webcontroller relies on the keyword “motor” to discover the motors, so with “motor1” it’s not well parsed.
OiD-W
February 15, 2026, 2:55am
3
Hi @Antun_Skuric
Thanks for that tip. I changed it to “motor x” and instead of having two commanders i set both motors to the same commandercommand0 and removed command1 :
Commander command0 = Commander(Serial);
void doMotor0(char* cmd){command0.motor(&motor0, cmd);}
void doMotor1(char* cmd){command0.motor(&motor1, cmd);}
void setup() {
SimpleFOCDebug::enable(&Serial);
char motor0_id = 'L';
command0.add(motor0_id,doMotor0,"motor0");
char motor1_id = 'R';
command0.add(motor1_id,doMotor1,"motor 1");
motor1.useMonitoring(Serial);
motor1.monitor_start_char = motor1_id;
motor1.monitor_end_char = motor1_id;
motor0.useMonitoring(Serial);
motor0.monitor_start_char = motor0_id;
motor0.monitor_end_char = motor0_id;
command0.verbose = VerboseMode::machine_readable;
motor0.monitor_variables = _MON_TARGET | _MON_VEL | _MON_ANGLE | _MON_TARGET | _MON_VOLT_Q | _MON_VEL | _MON_ANGLE;
motor0.monitor_downsample = 10;
motor1.monitor_variables = _MON_TARGET | _MON_VEL | _MON_ANGLE | _MON_TARGET | _MON_VOLT_Q | _MON_VEL | _MON_ANGLE;
motor1.monitor_downsample = 10;
}
void loop() {
motor0.loopFOC();
motor1.loopFOC();
motor0.move(2);
motor1.move(2);
motor0.monitor();
motor1.monitor();
command0.run();
}
Will continue when i have time but finally it looks like i can start tuning both motors :3
Thanks!