I am using SK6812 WWA LEDs and I noticed that when I pick up the data wire, the LEDs start going a little crazy. Nothing is touching another wire, the soldering looks fine, and its only the data wire that when touching, causes this to happen. It happens to a lesser degree on one of my other projects, also the same type of LED strips.
I have a video of this happening but it does not appear that I can upload video to this forum.
Here is my code if that is at all relevant:
#include <FastLED.h>
#define LED_PIN 4
#define NUM_LEDS 130
#define BRIGHTNESS 255
#define LED_TYPE WS2812B
#define COLOR_ORDER GRB
CRGB leds[NUM_LEDS];
int ringStarts[] = {0, 18, 45, 82}; // Start index of each ring
int ringLengths[] = {18, 27, 37, 46}; // Number of LEDs in each ring
float globalPhase = 0;
float speed = 0.015;
// Easing for smooth fade
float easeInOut(float t) {
return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;
}
// Base warm white color
const float baseR = 255;
const float baseG = 165;
const float baseB = 60;
const float maxBrightness = 50.0; // Cap total brightness
void setup() {
FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS);
FastLED.setBrightness(BRIGHTNESS);
}
void loop() {
globalPhase += speed;
if (globalPhase > 1.0) globalPhase -= 1.0;
for (int r = 0; r < 4; r++) {
float phaseOffset = r * 0.15;
float phase = globalPhase - phaseOffset;
if (phase < 0) phase += 1.0;
float fade = easeInOut(phase < 0.5 ? phase * 2 : (1 - phase) * 2);
float brightness = fade * maxBrightness / 255.0;
int start = ringStarts[r];
int length = ringLengths[r];
for (int i = 0; i < length; i++) {
uint8_t rVal = baseR * brightness;
uint8_t gVal = baseG * brightness;
uint8_t bVal = baseB * brightness;
leds[start + i] = CRGB(rVal, gVal, bVal);
}
}
FastLED.show();
delay(20);
}
Re-inspect solder connections. For beginners, a good solder joint happens by good luck only. Willing to bet you've got at least one cold solder joint.
How long are your data and power wires?
Show us a schematic - I'm looking for the power connections to the LEDs; also, that many LEDs had better be powered by an external supply, so verify that the GND of that supply is connected to the Arduino GND.
If you are using a 3.3V Arduino, operation can be flaky. The LED strips want a 5V data signal.
Or if you have a series resistor in the data line (Adafruit recommends 300-500 Ohms) the value may be wrong (too high). Around 10K Ohms it will be more sensitive to noise.
P.S.
Assuming you're not wearing a ground strap, touch ground before touching the circuitry to make sure there is no charge on your body. ESD can kill electronics and you may never know what happened.
But you can give a link to it, if it is hosted on YouTube or Vimeo.
Well the answer, might be, just don't pick it up. Or that picking it up disturbers some sort of connection. Or your electromagnet environment might be so full of signals that injecting this amount of RFI (Radio Frequency Interference) that you are actually triggering the data signal.
Are you close to some sort of overhead power lines, or live close to a Taxi control center? Or someone living close to you is a Radio Ham.
I was told specifically on my last post to not use third party sites to link photos so I was unsure if I could use them for videos. But here is a link to show what’s happening. Thanks for taking a look.
I’m guessing it’s not any specific interference since when I had these same wires hooked up to WS2812B LEDs, I didn’t notice the issue. Maybe it is a solder that’s not perfect. But it’s odd because it’s specifically when I touch/put pressure on the data wire. See here.
The next place I would look is, you. Are you inducing a charge on the LEDs. They are a bunch of antennae, waiting to receive anything. Are you touching any metal portion of the LEDs or Arduino? Oil and sweat on your skin conducts. Ground yourself, and stay grounded, as you handle the LED and Arduino.
So I tried resoldering multiple times and each time they looked pretty good but still had them go haywire when the data wire was touched. Then I thought maybe just the first LED was fried or something so I cut it out and soldered in a new one. Then I thought maybe the capacitor or resistor went bad so I replaced those are that made no difference.
Then finally I took brand new wire just for the 3 that go to my first LED strip (not even any others that attach the subsequent strips to each other) and soldered those on and it got rid of the issue. So either I got lucky with a good solder and it had nothing to do with the wire itself, or it was the new wire itself that fixed the issue.
If you just post the URL the video will show up. like this
I noticed that at first you did not get interference until you picked it up.
I suggest that you are pulling the single wire going to the Arduino's data output pin slightly. This has a single wire which do not make very strong contacts, and are often flaky.
Those are little push quick wire connectors. Since I haven’t solidified everything yet I’m using those. In between that particular section there is the resistor.
It ended up seeming to be the data wire itself. I resoldered multiple times to try and get a better solder connection but kept having the issue. I finally just changed those 3 wires to brand new wire and soldered them on and I don’t have the problem anymore!
I marked it as solved since I solved the problem last night. Here is what I wrote and marked this as the solution. It seemed to be the wire itself.
Sorry I’m not sure what you meant by haste makes waste? I am brand new to this, but I’ve also been working on this piece since December and have not been rushing. The reason for the quick connectors is because I’ve been switching between 3 LED art pieces and up until last week was using only 1 Arduino. So soldering all the wires together didn’t make sense until everything is finalized. I also might work a sensor into the project so I’m trying to make my build flexible. The idea to start the project this way came from Rachel De Barros’s videos on YouTube which I find super helpful.