MoveArcade()

Purpose

Easily implement an Arcade style drive for a mobile robot.

When to use

If you have an Arcade styled drive system configuration, where a signal controls forward/backward motion and another one controls the rotation.

Where to use

In the void loop() part of your .ino file, since it’s a one time calculation that needs to be re-executed at short intervals.

This function requires the use of the following functions at some point of your .ino file in order to work properly:

Returns

This function does not return a value once it has completed its tasks.

Main prototype and parameters

static void CrcLib::MoveArcade(int8_t forwardChannel, int8_t yawChannel, unsigned char frontLeftMotor, unsigned char backLeftMotor, unsigned char frontRightMotor, unsigned char backRightMotor)

The following parameters must be passed to the function for it to work properly:

  • forwardChannel: The speed value used to control the forward/backward motion. Must be of the type int8_t (also called signed char), so ranging [-128, 127].

  • yawChannel: The speed value used to control rotative motion. Must be of the type int8_t (also called signed char), so ranging [-128, 127].

  • frontLeftMotor: The name of the PWM pin to which is connected the front left motor. Must be of the type unsigned char.

  • backLeftMotor:The name of the PWM pin to which is connected the back left motor. Must be of the type unsigned char.

  • frontRightMotor: The name of the PWM pin to which is connected the front right motor. Must be of the type unsigned char.

  • backRightMotor:The name of the PWM pin to which is connected the back right motor. Must be of the type unsigned char.

Overloads

#1: Using only one motor per side

static void CrcLib::MoveArcade(int8_t forwardChannel, int8_t yawChannel, unsigned char leftMotor, unsigned char rightMotor)

The following parameters must be passed to the function for it to work properly:

  • forwardChannel: The speed value used to control the forward/backward motion. Must be of the type int8_t (also called signed char), so ranging [-128, 127].

  • yawChannel: The speed value used to control rotative motion. Must be of the type int8_t (also called signed char), so ranging [-128, 127].

  • leftMotor.The name of the PWM pin to which is connected the left motor. Must be of the type unsigned char.

  • rightMotor: The name of the PWM pin to which is connected the right motor. Must be of the type unsigned char.

#2: Directly using remote controller joystick values, with 2 motors per side

static void CrcLib::MoveArcade(ANALOG forwardChannel, ANALOG yawChannel, unsigned char frontLeftMotor, unsigned char backLeftMotor, unsigned char frontRightMotor, unsigned char backRightMotor)

The following parameters must be passed to the function for it to work properly:

  • forwardChannel: The speed value used to control the forward/backward motion. Must be of the type ANALOG.

  • yawChannel: The speed value used to control rotative motion. Must be of the type ANALOG.

  • frontLeftMotor: The name of the PWM pin to which is connected the front left motor. Must be of the type unsigned char.

  • backLeftMotor:The name of the PWM pin to which is connected the back left motor. Must be of the type unsigned char.

  • frontRightMotor: The name of the PWM pin to which is connected the front right motor. Must be of the type unsigned char.

  • backRightMotor:The name of the PWM pin to which is connected the back right motor. Must be of the type unsigned char.

#3: Directly using remote controller joystick values, with only 1 motor per side

static void CrcLib::MoveArcade(ANALOG forwardChannel, ANALOG yawChannel, unsigned char leftMotor, unsigned char rightMotor)

The following parameters must be passed to the function for it to work properly:

  • forwardChannel: The speed value used to control the forward/backward motion. Must be of the type ANALOG.

  • yawChannel: The speed value used to control rotative motion. Must be of the type ANALOG.

  • leftMotor:he name of the PWM pin to which is connected the left motor. Must be of the type unsigned char.

  • rightMotor: The name of the PWM pin to which is connected the right motor. Must be of the type unsigned char.

Examples

#include <CrcLib.h> void setup() { CrcLib::Initialize(); CrcLib::InitializePwmOutput(CRC_PWM_1); CrcLib::InitializePwmOutput(CRC_PWM_2); /* The rest of your setup code ... */ } void loop() { CrcLib::Update(); CrcLib::MoveArcade(ANALOG::JOYSTICK1_Y, ANALOG::JOYSTICK2_X, CRC_PWM_1, CRC_PWM_2); /* The rest of your looping code ... */ }

More on this function

There is sadly nothing more to be said about this function…

Related articles