Dashboard not displaying messages

Our dashboard does not seem to display any message whatsoever when we try to run the robot code.

Can anybody please explain why such a thing is happening and how we can write to the dashboard?

This is just sample code to get the hang of the encoder average encoder value. Apologies for the terrible variable names.

However, it does not display a message even if I do something simple like trying to print a value onto the dashboard.

public void autonomousInit() {
autoLoopCounter = 0;
Encoder sampleEncoder = new Encoder(8, 9, false, Encoder.EncodingType.k2X);
sampleEncoder.setMaxPeriod(0.1);
sampleEncoder.setMinRate(10);
sampleEncoder.setDistancePerPulse(5);
sampleEncoder.setSamplesToAverage(7);
sampleEncoder.reset();

    SmartDashboard.putNumber("hmm", 2);

	double k = sampleEncoder.getRate();
	boolean what = sampleEncoder.getStopped();
	String huh = sampleEncoder.getSmartDashboardType();
	while (k>10){
	String k2 = Double.toString(k);
	double distance = sampleEncoder.getDistance();
	String distance1 = Double.toString(distance);
	SmartDashboard.putNumber(k2, k);
	SmartDashboard.putNumber(distance1, distance);
	SmartDashboard.putBoolean(huh, what);
}

Try putting all of the smartdashboard code you want to display:

SmartDashboard.putNumber("hmm", 2);

double k = sampleEncoder.getRate();
boolean what = sampleEncoder.getStopped();
String huh = sampleEncoder.getSmartDashboardType();
while (k>10){
String k2 = Double.toString(k);
double distance = sampleEncoder.getDistance();
String distance1 = Double.toString(distance);
SmartDashboard.putNumber(k2, k);
SmartDashboard.putNumber(distance1, distance);
SmartDashboard.putBoolean(huh, what);

Into the autonomousPeriodic() method.

because your while loop’s condition is k > 10.

You never set k to anything. Therefore, it will just runaway with the thread printing the same numbers to the dashboard (which will be 0 since the encoder was just reset)

you should move everything inside the “while” (plus the “double k = …”) to autonomousPeriodic. (don’t use the person above mine’s code, as it still suffers from the lack of setting ‘k’)


Encoder sampleEncoder = new Encoder(8, 9, false, Encoder.EncodingType.k2X);
public void autonomousInit() {
autoLoopCounter = 0;
sampleEncoder.setMaxPeriod(0.1);
sampleEncoder.setMinRate(10);
sampleEncoder.setDistancePerPulse(5);
sampleEncoder.setSamplesToAverage(7);
sampleEncoder.reset();

SmartDashboard.putNumber("hmm", 2);
}

public void autonomousPeriodic(){
double k = sampleEncoder.getRate();
boolean what = sampleEncoder.getStopped();
String huh = sampleEncoder.getSmartDashboardType();
String k2 = Double.toString(k);
double distance = sampleEncoder.getDistance();
String distance1 = Double.toString(distance);
SmartDashboard.putNumber(k2, k);
SmartDashboard.putNumber(distance1, distance);
SmartDashboard.putBoolean(huh, what);
}

also

  1. use more descriptive variable names (huh, what, k2, k are all very, very bad names) (I understand you used these to test, but these for testing isn’t even acceptable. You’re going to try to fix ur broken test code and u’ll end up spending more time re-learning what the variables do than actually fixing the code)
  2. don’t instantiate ANYTHING (encoder… hint hint) in a function that can be run more than once as your code will error out