Trouble with limit switches

So basically we can’t get a change in value when the limit switch is pressed.

We have one end of the limit switch wired to signal and the other to ground on the Digital Inputs on the Digital Sidecar.

We are using Java for our programming.
Heres the code pulled out from robotInit and teleopPeridodic:

private DigitalInput limit; 
limit = new DigitalInput(1);        
System.out.println("ingest switch: " + limit.get()); 

We tried connecting the ground a signal wires together without the limit switch, tried different cables, and different ports. Nothing seems to work.

If someone has any idea on what to try it would be helpful.
We are gonna try a new digital sidecar tomorrow and see if that works.

One symptom of a broken ribbon cable is bad I/Os. Do a continuity test on each of the pins. This exact thing happened to us and cost over an hour at competition.

Measure the voltage on the DIO signal pin. It should change when you flip the switch.

Is the Digital Sidecar correctly powered? The 5V light needs to be shining bright in order for the inputs to work.

It’s not working because you are supposed to connect the switch to SIG and POWER.

The 5V light was lighting up like it should be.

Everywhere I’ve looked says to connect ground to signal, so I’m not sure that is correct. Connecting the power to signal doesn’t do anything either anyways.

We have other IO pins being used with encoders that are working perfectly fine. Whenever we try to use a limit switch on any of the pins, it doesn’t work. I can try a new ribbon cable later today and see if that works.

That’s not correct. The digital sidecar has a pullup to 5v on the signal line. Connecting a switch between signal and power means that signal will never change from 5v. You need to connect the switch between signal and ground, so that signal will switch from 5v (when open) to ground (when closed).

I also guess that something is wrong with power. Follow Alan’s suggestions.

Some thoughts:

  1. Double and triple check the code to make sure you aren’t assigning something else to that pin as well.
  2. Try creating a whole new software project that has nothing in it but the limit switch code, to make sure you aren’t running into any issues with other stuff interfering.
  3. Unplug your limit switch and verify it’s working as intended - use a multimeter to measure resistance between the two pins on the PWM connector - you should see the resistance value switch between infinite and 0 ohms when pressing the switch (as for which one is which, that’s up to how it’s wired - normally connected or normally open).
  4. Check the LED’s on the DSC - all three should be brightly lit (5V, 6V and Power), and you should see the RSL working correctly.
  5. Take spares of other parts (DSC, DSC-cRIO cable, etc) and swap them out to make sure the problem isn’t in one of them.

Ooooowwh…it pulls up.
In my defense, I don’t think I’ve used a custom digital input.

You can also use that same multimeter to measure the voltage potential on and across the limit switch while it’s plugged in. If it’s changing how you expect it to, you likely have a software problem. If it isn’t changing, you likely have a wiring problem.