Using the LabVIEW Dashboard with C++, Java, or Python Code

The default LabVIEW Dashboard utilizes NetworkTables to pass values and is therefore compatible with C++, Java, and Python robot programs. This article covers the keys and value ranges to use to work with the Dashboard.

Pestaña Drive

../../../../_images/drive-tab.png

Se puede utilizar el menú desplegable Select Autonomous… para mostrar las rutinas autónomas disponibles y elegir una para ejecutar en el partido.

SmartDashboard.putStringArray("Auto List", {"Drive Forwards", "Drive Backwards", "Shoot"});
   // At the beginning of auto
String autoName = SmartDashboard.getString("Auto Selector", "Drive Forwards") // This would make "Drive Forwards the default auto
switch(autoName) {
   case "Drive Forwards":
   // auto here
   case "Drive Backwards":
   // auto here
   case "Shoot":
   // auto here
}
frc::SmartDashboard::PutStringArray("Auto List", {"Drive Forwards", "Drive Backwards", "Shoot"});
   // At the beginning of auto
String autoName = SmartDashboard.GetString("Auto Selector", "Drive Forwards") // This would make "Drive Forwards the default auto
switch(autoName) {
   case "Drive Forwards":
   // auto here
   case "Drive Backwards":
   // auto here
   case "Shoot":
   // auto here
}
from wpilib import SmartDashboard
   SmartDashboard.putStringArray("Auto List", ["Drive Forwards", "Drive Backwards", "Shoot"])
   # At the beginning of auto
autoName = SmartDashboard.getString("Auto Selector", "Drive Forwards") # This would make "Drive Forwards the default auto
match autoName:
   case "Drive Forwards":
      # auto here
   case "Drive Backwards":
      # auto here
   case "Shoot":
      # auto here

El envío a la entrada «Gyro» de NetworkTables rellenará el giroscopio aquí.

SmartDashboard.putNumber("Gyro", drivetrain.getHeading());
frc::SmartDashboard::PutNumber("Gyro", Drivetrain.GetHeading());
from wpilib import SmartDashboard
SmartDashboard.putNumber("Gyro", self.drivetrain.getHeading())

Hay cuatro salidas que muestran la potencia del motor a la transmisión. Está configurado para 2 motores por lado y una transmisión estilo tanque. Esto se hace configurando «RobotDrive Motors» como en el ejemplo siguiente.

SmartDashboard.putNumberArray("RobotDrive Motors", {drivetrain.getLeftFront(), drivetrain.getRightFront(), drivetrain.getLeftBack(), drivetrain.getRightBack()});
frc::SmartDashboard::PutNumberArray("Gyro", {drivetrain.GetLeftFront(), drivetrain.GetRightFront(), drivetrain.GetLeftBack(), drivetrain.GetRightBack()});
from wpilib import SmartDashboard
SmartDashboard.putNumberArray("RobotDrive Motors", [self.drivetrain.getLeftFront(), self.drivetrain.getRightFront(), self.drivetrain.getLeftBack(), self.drivetrain.getRightBack()])

Pestaña basica

../../../../_images/basic-tab.png

La pestaña Basic utiliza un número de teclas en la sub-tabla «DB» para enviar/recibir datos de la Dashboard. Los LED´s son sólo de salida, los otros campos son todos bidireccionales (enviar o recibir).

Strings

../../../../_images/strings.png

Los strings están etiquetadas de arriba a abajo, de izquierda a derecha de «DB/String 0» a «DB/String 9». Cada campo de un string puede mostrar al menos 21 caracteres (el número exacto depende de qué caracteres). Para escribir a estas cadenas:

SmartDashboard.putString("DB/String 0", "My 21 Char TestString");
frc::SmartDashboard::PutString("DB/String 0", "My 21 Char TestString");
from wpilib import SmartDashboard
SmartDashboard.putString("DB/String 0", "My 21 Char TestString")

Para leer los datos tipo string ingresados en la Dashboard:

String dashData = SmartDashboard.getString("DB/String 0", "myDefaultData");
std::string dashData = frc::SmartDashboard::GetString("DB/String 0", "myDefaultData");
from wpilib import SmartDashboard
dashData = SmartDashboard.getString("DB/String 0", "myDefaultData")

Botones y LEDs

../../../../_images/buttons-and-leds.png

Los botones y LEDs son valores booleanos y están etiquetados de arriba a abajo de «DB/Button 0» a «DB/Button 3» y «DB/LED 0» a «DB/LED 3». Los botones son bidireccionales, los LEDs sólo son capaces de ser escritos desde el robot y leidos en la Dashboard. Para escribir a los botones o LEDs:

SmartDashboard.putBoolean("DB/Button 0", true);
frc::SmartDashboard::PutBoolean("DB/Button 0", true);
from wpilib import SmartDashboard
SmartDashboard.putBoolean("DB/Button 0", true)

Para leer desde los botones: (el valor predeterminado es falso)

boolean buttonValue = SmartDashboard.getBoolean("DB/Button 0", false);
bool buttonValue = frc::SmartDashboard::GetBoolean("DB/Button 0", false);
from wpilib import SmartDashboard
buttonValue = SmartDashboard.getBoolean("DB/Button 0", false)

Sliders

../../../../_images/sliders.png

Los sliders o controles deslizantes son controles/indicadores analógicos bidireccionales (dobles) con un rango de 0 a 5. Para escribir a estos indicadores:

SmartDashboard.putNumber("DB/Slider 0", 2.58);
frc::SmartDashboard::PutNumber("DB/Slider 0", 2.58);
from wpilib import SmartDashboard
SmartDashboard.putNumber("DB/Slider 0", 2.58)

Para leer valores de una Dashboard dentro del robot: (valor predeterminado de 0.0)

double dashData = SmartDashboard.getNumber("DB/Slider 0", 0.0);
double dashData = frc::SmartDashboard::GetNumber("DB/Slider 0", 0.0);
from wpilib import SmartDashboard
dashData = SmartDashboard.getNumber("DB/Slider 0", 0.0)