Example 05b ‐ Motor fix speed, On Off‐Switch (Adafruit MotorShield V2 at I2C) - GSTCH/SketchMadeEASY GitHub Wiki
Motor fix speed, controlled by switch (L-0-R). Motor turn 100% of the maximum speed forward and into the other direction (backwards) 80%. The motor is controlled by the I2C-Bus MotorShield V2 from Adafruit. If Sketch Made EASY is installed, it can be opened via menu: "File:/Example/SketchMadeEASY/Examples/05-MotorFixSpeedSwitch".

The thee variants differ in the definition of the actuator (motor).
#include <Easy.h>
//*****************************************************************
// Parameter I2C Motor
#define MOTOR_NUMBER 1
// Parameter of Switch
#define MOTOR_SWITCH_FORWARDPIN 36
#define MOTOR_SWITCH_BACKWARDPIN 37
// Parameter Fix Value
#define MOTOR_SPEED_MIN 0
#define MOTOR_SPEED_MAX 100
#define FIX_VALUE_FORWARDSPEED_SPEED 100
#define FIX_VALUE_BACKWARDSPEED_SPEED -80
void setup()
{
//((*** Initialize: Configure your sketch here....
//** Create actuator:
MotorI2C* motor = new MotorI2C(MOTOR_NUMBER);
//** Create input:
// Switch used by condition in the logic.
Switch3Position* motorSwitch = new Switch3Position(MOTOR_SWITCH_FORWARDPIN, MOTOR_SWITCH_BACKWARDPIN);
//** Define logic with conditions and relations
// Define relation when switch is at position 1 --> Turn forward with fix speed
CompareCondition* motorForwardCondition = new CompareCondition(motorSwitch, OpEQ, Switch3Position::Pos1);
Relation1to1* relationMotorForward = new Relation1to1(motorForwardCondition, motor, FixValue::Percent(FIX_VALUE_FORWARDSPEED_SPEED));
// Define relation when switch is at position 2 --> Turn backward with fix speed
CompareCondition* motorBackwardCondition = new CompareCondition(motorSwitch, OpEQ, Switch3Position::Pos2);
Relation1to1* relationMotorBackward = new Relation1to1(motorBackwardCondition, motor, FixValue::Percent(FIX_VALUE_BACKWARDSPEED_SPEED));
// Define relation when switch is at position 0 --> stopped
CompareCondition* motorStopCondition = new CompareCondition(motorSwitch, OpEQ, Switch3Position::PosMid);
Relation1to1* relationMotorStop = new Relation1to1(motorStopCondition, motor, FixValue::Off());
// ***))
// Initialize control
ControlManagerFactory::GetControlManager()->Setup();
}
//*****************************************************************
void loop() {
//*** Run: No additional code is required
ControlManagerFactory::GetControlManager()->Loop();
// Depending on Arduino it needs a short delay. Do not add any other delays!
delay(5);
}