How to make a button in shuffleboard?

How do you make a button on the shuffleboard that lets you do something? For example, can we make a button on the shuffleboard that changes the LEDs connected to the robot to red?

Short answer: Yes.

Long answer: Doing this is kind of verbose/annoying with the standard API. You have to keep the NetworkTableEntry object returned by the shuffleboard add method, and read its value in some periodic function.

If you use Oblog, however, this is as simple as:

@Config.ToggleButton
void enableLEDs(boolean enabled) {
  // Do whatever you want here
}

Hi, thank you for your response. We downloaded Oblog but it’s not working because build.gradle always crashes when loading the dependency. Building doesnt work.

Can you post your build.gradle? Also, make sure you’re connected to the internet for your first build after adding the dependency.

You can code-format your post by surrounding it in triple backticks:

```
your code here
```

plugins {
    id "java"
    id "edu.wpi.first.GradleRIO" version "2020.2.2"
}

sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11

repositories {
  maven { url 'https://jitpack.io' }
}

def ROBOT_MAIN_CLASS = "frc.robot.Main"

// Define my targets (RoboRIO) and artifacts (deployable files)
// This is added by GradleRIO's backing project EmbeddedTools.
deploy {
    targets {
        roboRIO("roborio") {
            // Team number is loaded either from the .wpilib/wpilib_preferences.json
            // or from command line. If not found an exception will be thrown.
            // You can use getTeamOrDefault(team) instead of getTeamNumber if you
            // want to store a team number in this file.
            team = frc.getTeamNumber()
        }
    }
    artifacts {
        frcJavaArtifact('frcJava') {
            targets << "roborio"
            // Debug can be overridden by command line, for use with VSCode
            debug = frc.getDebugOrDefault(false)
        }
        // Built in artifact to deploy arbitrary files to the roboRIO.
        fileTreeArtifact('frcStaticFileDeploy') {
            // The directory below is the local directory to deploy
            files = fileTree(dir: 'src/main/deploy')
            // Deploy to RoboRIO target, into /home/lvuser/deploy
            targets << "roborio"
            directory = '/home/lvuser/deploy'
        }
    }
}

// Set this to true to enable desktop support.
def includeDesktopSupport = false

// Defining my dependencies. In this case, WPILib (+ friends), and vendor libraries.
// Also defines JUnit 4.
dependencies {

    implementation "com.github.Oblarg.Oblog:lib:<3.0.3>"

    implementation wpi.deps.wpilib()
    nativeZip wpi.deps.wpilibJni(wpi.platforms.roborio)
    nativeDesktopZip wpi.deps.wpilibJni(wpi.platforms.desktop)


    implementation wpi.deps.vendor.java()
    nativeZip wpi.deps.vendor.jni(wpi.platforms.roborio)
    nativeDesktopZip wpi.deps.vendor.jni(wpi.platforms.desktop)

    testImplementation 'junit:junit:4.12'

    // Enable simulation gui support. Must check the box in vscode to enable support
    // upon debugging
    simulation wpi.deps.sim.gui(wpi.platforms.desktop, false)

}

// Setting up my Jar File. In this case, adding all libraries into the main jar ('fat jar')
// in order to make them all available at runtime. Also adding the manifest so WPILib
// knows where to look for our Robot Class.
jar {
    from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } }
    manifest edu.wpi.first.gradlerio.GradleRIOPlugin.javaManifest(ROBOT_MAIN_CLASS)
}

You need to remove the <> from the version tag.

it worked thank you!

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.