How the system is wired:
The voltage regulator is plugged into the PDP with a 20 amp breaker. The output of the voltage regulator plugs into the power-injection wires on the light strip. This voltage regulator has been tuned to output 5v.
The arduino gets its power from a barrel plug connected to an FRC-standard VRM, running at 5v 0.5 amps.
A single data wire runs from pin 4 on the arduino to the data pin on the light strip. The code is not the problem.
When we first plugged this all together, it worked the first time. The light strip did exactly what we though it would. However, after changing one line of code, the light strip has not worked since. (Of course we changed this line of code back to the original.) We believe that something may have happened during the time that we redeployed code to the arduino.
A hypothesis that we have is that the 2 power wires which extend from the rear of the light strip may have contacted each other, causing a short (the other side of the light strip, which acts as a power-passthrough. Not the end where the power is given to the light strip). It is therefore possible that the light strip is electrically damaged.
Input power to the VRM has been confirmed at 12 volts
Output power from the voltage regulator linked above has been confirmed at 5 volts
Output power from the FRC-standard VRM which powers the arduino has been confirmed at 5 volts.
Voltage all the way at the end of the lightstrip, from the power-passthrough wires, has been confirmed at 5 volts.
We have also tried powering the arduino via a USB cable plugged into the roboRIO. Same results.
These strips are very finicky and prone to dying due to overvoltage. One thing you might try, connect the grounds of the 5v regulator and the arduino together. Use a ~20ohm resistor to connect the arduino data pin to the strip’s data pin. Put a filter cap (I like 4700uF 10V, but anything rated for 10V plus should work fine) across the power lines. This is crucial to strip survival, as it prevents damaging surges due to how quickly the power consumption of the strips can change. What voltage are the arduino’s outputs rated for?
Some strips are very picky about their Vdd and Vcc being very close to each other. I like the Teensy LC for driving LED strips since it has 1 pin with a Vcc buffer.
It’s also worth having a short strip pre-wired for testing
Is the Arduino an Uno? It and some other Arduinos want 7 <= Vin <= 12 volts DC at the barrel plug input: https://store.arduino.cc/usa/arduino-uno-rev3 => Tech Specs. That doc says that the input voltage max range is 6 <= Vin <= 20 VDC.
The following assumes a 5V Arduino - its internal regulator is going to consume some voltage, the minimum voltage the regulator needs (this is the voltage across the regulator itself) is its “Dropout Voltage”, and 5V into its barrel plug, minus that Dropout Voltage will deliver <5V to the Arduino’s circuits.
The output voltage from the Arduino’s regulator can be measured at the Arduino’s “5V” pin, and some people power their Arduino by supplying 5VDC into that pin. This then bypasses that internal regulator and too high a voltage >5 will fry the Arduino. You can look at the specs for the VRM and decide. Or you could connect the barrel plug, given its 6-20V max range, to the bot’s PDP. Look at the rules for specifics. The minimum PDP fuse size is 20A, there’s an old electrical joke that circuits will burn out in order to protect their fuse; a shorted Arduino will go up in smoke long before a 20A fuse might blow. The rules allow a smaller fuse between the PDC and your Arduino, see R58’s box, but I’ve never seen anyone doing it.
Given all this, your Arduino may well work connected as you describe, circuits often do. But you can’t count on all Arduinos to work at all temperatures and for a long time if you run them out of spec. Your LEDs aren’t critical to the ‘bot, so you can take more risks, and cheap Internet crap may well do so, that’s a way to make it cheap. But good commercial products will never run components out of spec, and more often than not stay well within spec.
Sorry, i might have forgotten to mention that. We made a custom wire which splits from the lightstrip ground into the vrm ground and arduino ground. We also voltage tested this wire, and tried it with the arduino ground plugged straight into the lightstrip.
Wouldn’t the arduino already be on the ground? We were powering it from a vrm, from the pdp, and the lightstrip was being powered by another vrm, also from the PDP.
The Arduino will take the current it needs and no more, and it’s a very small current relative to the LEDs. As far as I know, all Arduinos can be powered by regulated 5V through at least one of the I/O pins. You wouldn’t be using the barrel connector at all.
A benefit of using a single power supply is you won’t have any of the power-up sequence timing issues that tend to blow up Neopixels and their cousins.
Yes. There’s an example program in the Arduino dev. environment called Blink that blinks the built in LED that all Arduinos have. I think you could use Blink to test the LED strip too, but I haven’t used them so I’ll defer to others here.
And absolutely yes, the Arduino and LED thing must have a common ground. The referenced Adafruit instructions say this.
It may be better to find a 5VDC power supply (like a wall wart) and remove all the FRC stuff altogether. Use a multimeter to test the output of the power supply first, many are poorly regulated. Does your school’s physics class have good, regulated power supplies? Ours does.