Main Content

Autonomous mode and Driver mode with the VEX Microcontroller

This example shows how to use Simulink® Coder™ Support Package for ARM® Cortex®-based VEX® Microcontroller to implement both Autonomous mode and Driver mode in the same Simulink model. Autonomous mode, Driver mode and the switch between the two is a format that applies only to the VEX Robotics Competition. This model should be used only in a VEX Competition field where a VEX field controller controls the modes of the VEX Robot (you can also use a VEX Competition Switch that simulates a VEX field controller for match practice).

Introduction

Simulink Coder Support Package for ARM Cortex-based VEX Microcontroller enables you to create and run Simulink models on a VEX microcontroller.

In this example you will learn how to program both Autonomous mode and Driver mode in the same Simulink model. The Driver mode will driver a DC motor mapped to the VEX gamepad, and the autonomous mode will driver a DC motor at maximum speed.

Prerequisites

Required Hardware

To run this example you will need the following hardware:

  • ARM Cortex-based VEX Microcontroller

  • VEXnet Gamepad and VEXnet keys

  • Standard DC Motor and Motor Controller

  • 7.2V Battery

  • USB type A-Male to A-Male cable

  • VEXnet Competition Switch(or the VEX field controller used in the actual VEX Robotics Competition)

Task 1 - Hardware Connections

1. Connect the VEX Microcontroller to your computer with a USB cable.

2. Connect the DC motor to the motor pin3. Use the Motor Controller 29 cables to establish the connection between the motors leads and the pins on VEX Microcontroller.

3. Connect the battery supply to the VEX Microcontroller.

4. Connect the VEXnet Competition Switch to the Competition port on the VEXnet Gamepad using an Ethernet cable. On the VEXnet Competition Switch, set the Enable/Disable switch to Disable state and the Driver/Autonomous switch to Autonomous state.

Task 2 - Create a VEX Robotics Competition Template Model

1. In MATLAB®, select HOME > New > Simulink Model > Blank Model > Create Model.

2. Click on the Library Browser to open the Simulink Library.

3. Select Simulink > Ports & Subsystems > Enabled Subsystem, drag and drop twice into your Simulink model. Rename the Enabled Subsystems Autonomous and Driver respectively.

4. Open vexarmcortexlib, drag and drop the Competition Switch block from the Gamepad library into your Simulink model.

5. Connect the Auto port of the Competition Switch to the Autonomous Enabled Subsystem, and the Driver port of the Competition Switch to the Driver Enabled Subsystem.

Task 3 - Implement Autonomous mode logic and Driver mode Logic

1. Double click and open the Autonomous Enabled Subsystem. In the Autonomous Enabled Subsystem, delete the Inport, Outport and the connection between them.

2. Drag the Constant block from the Utilities in the VEX Microcontroller library. Set the value of the Constant block to 127.

3. Drag the DC Motor block from the Actuators library within the VEX Microcontroller library to your model. Rename it to SetMotor. Set the value of the Motor Channel to 3. Motor Channel is the pin to which the DC motor is connected.

4. Connect the Constant block to the input of the SetMotor block.

5. Click the Up to Parent button to return to the top level of the model.

6. Double click and open the Driver Enabled Subsystem. In the Driver Enabled Subsystem, delete the Inport, Outport and the connection between them.

7. Drag the DC Motor block from the Actuators library and the Gamepad Joystick block from the Gamepad library within the VEX Microcontroller library into your Simulink model.

8. Set the value of the Motor Channel to 3.

9. Connect the output of the Gamepad Joystick to the input of the DC Motor.

10. Save your model.

A pre-configured vexarmcortex_vrc_template model is also available.

Task 4 - Build and Download the Simulink Model

In this task you will open the Simulink model created in Task 2 and Task 3, build and download it to the VEX microcontroller.

1. Make sure to connect the VEX Microcontroller to your computer with a USB A-Male to A-Male cable.

2. Open the model created in task 2 and task 3 or, open the pre-configured model(vexarmcortex_vrc_template) included for your convenience.

3. In the Simulink model, go to the Modeling tab and click Model Settings.

4. When the Configuration Parameters page opens up, navigate to the Hardware Implementation pane.

  • Set the Hardware board to ARM Cortex-based VEX Microcontroller.

  • In the Target Hardware Resources section, set the Build options to Build, load and run to automatically download the generated binary file on to the connected VEX microcontroller.

5. In the Configuration Parameters page, navigate to Solver pane and set the Solver to discrete (no continuous states).

6. Click OK.

7. In your Simulink model, go to the Hardware tab and click Build, Deploy and Start. The model will now be deployed to the VEX microcontroller.

Task 5 - Use the VEXnet Competition Switch to Set the Model in Autonomous mode or Driver mode

In this task you will learn how to set the Example model in Autonomous mode or Driver mode.

1. Disconnect the USB cable from the PC, and connect the VEX Microcontroller to the VEX gamepad using VEXnet keys. Also ensure that the VEXnet Competition Switch is connected to the VEX Gamepad via an Ethernet cable.

2. Turn on the VEX microcontroller and the VEXnet gamepad.

3. Set the Enable/Disable switch to Enable state (the Driver/Autonomous switch is already set to Autonomous state in Task 1). Now the model is in Autonomous mode. You will observe that the motor rotates at Maximum speed.

4. Set the Driver/Autonomous switch to Driver state. Now the model is in Driver mode. The motor stops rotating at maximum speed. You can control the motor through joystick horizontal axis 1 on the VEX Gamepad.

5. Set the Enable/Disable to Disable state. This will disable the robot. All the actuators (motors) will be inactive in this state.