I need help getting the dashboard on the driver station to show me what the robot is doing. I tried to get the dashboard working last year on C++ to no avail, and had hoped that FIRST had got it functioning this year, or at least made it easy that those of us still learning C++ can figure it out.
I have started from the SimpleTemplate code, and the only change I made was to goto TankDrive. I have added the DashboardDataFormat.h and DashboardDataFormat.cpp from the DashboardDataExample and I am posting the code in myRobot.cpp. The robot works fine, it drives around and is definitely talking to the driver station and everything is updated, but the dashboard will not reflect what the PWM's are doing.
Can someone enlighten me on what I am doing wrong. I expect with this code the way it is to see the PWM sliders on the driver station to move up and down as the joysticks are moved, but it doesn't do that. I have not included the sendVisionData because we aren't using the camera. Am I misunderstanding how the dashboard is supposed to work, is it not supposed to update the charts with the PWM positions?
Help me please with this code:
Code:
#include "WPILib.h"
#include "DashboardDataFormat.h"
/**
* This is a demo program showing the use of the RobotBase class.
* The SimpleRobot class is the base of a robot application that will automatically call your
* Autonomous and OperatorControl methods at the right time as controlled by the switches on
* the driver station or the field controls.
*/
class RobotDemo : public SimpleRobot
{
RobotDrive myRobot; // robot drive system
Joystick leftstick; // left joystick
Joystick rightstick; //right joystick
public:
RobotDemo(void):
myRobot(1, 3, 2, 4), // PWMs for drive
//1,3 - Left Motors
//2,4 - Right Motors
leftstick(1), // Left Joystick.
rightstick(2) // Right Joystick.
{
myRobot.SetInvertedMotor(RobotDrive::kFrontLeftMotor, false);
myRobot.SetInvertedMotor(RobotDrive::kFrontRightMotor, false);
myRobot.SetInvertedMotor(RobotDrive::kRearLeftMotor, false);
myRobot.SetInvertedMotor(RobotDrive::kRearRightMotor, false);
GetWatchdog().SetExpiration(0.1);
}
/**
* Drive left & right motors for 2 seconds then stop
*/
void Autonomous(void)
{
GetWatchdog().SetEnabled(false);
myRobot.Drive(0.5, 0.0); // drive forwards half speed
Wait(2.0); // for 2 seconds
myRobot.Drive(0.0, 0.0); // stop robot
}
/**
* Runs the motors with tank steering.
*/
void OperatorControl(void)
{
GetWatchdog().SetEnabled(true);
while (IsOperatorControl())
{
GetWatchdog().Feed();
myRobot.TankDrive(leftstick, rightstick); // drive
sendIOPortData();
Wait(0.005); // wait for a motor update time
}
}
};
START_ROBOT_CLASS(RobotDemo);