Using SK6812 LED Lights for a project and the entire strip will not light up under my custom code. The LEDs will only acknowledge the code if the code lists half or less than the total LEDs present. If I use another sketch that simply fills in the whole strip with one color, it works properly, so in theory this should rule out potential hardware issues. Lastly, a 470 Ohm resistor is placed between the data pin and Arduino. The custom code itself is rather extensive, and makes use of an IR Remote to control effects. I've been using a smaller strip composed of 30 LEDs to test the code and so far its worked perfectly. Is there any common issues that could lead to this problem? Thanks. Code listed below.
#include <IRremote.h>
#include <Adafruit_NeoPixel.h>
#define POWER 0xE0E040BF
#define VOL_UP 0xE0E0E01F
#define VOL_DOW 0xE0E0D02F
#define CH_UP 0xE0E048B7
#define CH_DOW 0xE0E008F7
#define MUTE 0xE0E0F00F
#define CH_RETURN 0xE0E0C837//INACTIVE
#define BUTTON_1 0xE0E020DF
#define BUTTON_2 0xE0E0A05F
#define BUTTON_3 0xE0E0609F
#define BUTTON_4 0xE0E010EF
#define BUTTON_5 0xE0E0906F
#define BUTTON_6 0xE0E050AF
#define BUTTON_7 0xE0E030CF
#define BUTTON_8 0xE0E0B04F
#define BUTTON_9 0xE0E0708F
#define BUTTON_DOT 0xE0E0C43B//INACTIVE
#define BUTTON_0 0xE0E08877
#define BUTTON_INPUT 0xE0E0807F//INACTIVE
#define LED_PIN 13
#define NUM_LEDS 430
int RECV_PIN = 2;//IR PIN
int DELAY = 2;
int CHECK;
int brightness_steps = 15;//Needs to be greater than 1; Higher Value Slower Brightness Changes
int Brightness;
int Brightness_Reduced = 38.25;//15% Max Power for Sleep
int Power_Button_Value = 0;
int Power_Button_change;
int color_change;
int num;
int number = 1;
uint16_t i, j;
int r, g, b, w, z;
int DELAY2 = 2000;
int x = 0;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, LED_PIN, NEO_WRGB + NEO_KHZ800);
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
strip.begin();
strip.show();
Brightness = 255;
color_change = 0;
strip.setBrightness(Brightness);
Bootup();//Custom Effect When Power is Supplied to Strip
strip.fill(strip.Color(0, 0, 0, 0));//Off
strip.show();
}
void loop() {
if (irrecv.decode(&results)) {
delay(DELAY);
Power();
delay(DELAY);
Mute();
delay(DELAY);
Button_1();
delay(DELAY);
Button_2();
delay(DELAY);
Button_3();
delay(DELAY);
Button_4();
delay(DELAY);
Button_5();
delay(DELAY);
Button_6();
delay(DELAY);
Button_7();
delay(DELAY);
Button_8();
delay(DELAY);
Button_9();
delay(DELAY);
Button_0();
delay(DELAY);
Vol_Up();
delay(DELAY);
Vol_Down();
delay(DELAY);
Ch_Up();
delay(DELAY);
Ch_Down();
delay(DELAY);
Flash_Red();
delay(DELAY);
if (results.value == MUTE) {
strip.setBrightness(Brightness_Reduced);
}
else {
strip.setBrightness(Brightness);
}
strip.show();
delay(DELAY);
irrecv.resume(); // Receive the next value
delay(50);
}
}
void Power() {
if (results.value == POWER) {
strip.fill(strip.Color(0, 0, 0, 0));
Serial.println("POWER Pressed");
}
}
void Vol_Up() {
if (results.value == VOL_UP) {
if ( Brightness + 255 / brightness_steps < 255) {
Brightness = Brightness + 255 / brightness_steps;
Serial.println(Brightness);
}
else {
Brightness = 255;
Serial.println(Brightness);
}
}
}
void Vol_Down() {
if (results.value == VOL_DOW) {
if ( Brightness - 255 / brightness_steps > 0) {
Brightness = Brightness - 255 / brightness_steps;
Serial.println(Brightness);
}
else {
Brightness = 5;
Serial.println(Brightness);
}
}
}
void Ch_Up() {
if (results.value == CH_UP) {
if ((color_change + 1) > 12) {
color_change = 0;
Serial.println(color_change);
}
else {
color_change = color_change + 1;
Serial.println(color_change);
}
delay(50);
Color_Change();
}
}
void Ch_Down() {
if (results.value == CH_DOW) {
if ((color_change - 1) < 0) {
color_change = 12;
Serial.println(color_change);
}
else {
color_change = color_change - 1;
Serial.println(color_change);
}
delay(50);
Color_Change();
}
}
void Mute() {
if (results.value == MUTE) {
strip.fill(strip.Color(0, 0, 255, 0));//white
Serial.println("Mute Button Pressed");
}
}
void Flash_Red() {//Inactive - Red Flash
if (results.value == CH_RETURN || results.value == BUTTON_DOT || results.value == BUTTON_INPUT || results.value == BUTTON_9) {
strip.setBrightness(255);
for (j = 255; j > 0; j--) {
for (i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, j, 0, 0, 0);
}
strip.show();
delay(0.1);
if (j < 0.01) {
break;
}
}
for (j = 255; j > 0; j--) {
for (i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, j, 0, 0, 0);
}
strip.show();
delay(2);
if (j < 0.01) {
break;
}
}
strip.fill(strip.Color(0, 0, 0, 0));
strip.show();
Serial.println("Flash Red");
}
}
void Button_1() {
if (results.value == BUTTON_1) {
Serial.println("Button 1 Pressed");
while (results.value == BUTTON_1) {
RunningLights(0, 0, 0xff, 0, 50); // white
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
if (results.value == POWER || results.value == VOL_UP || results.value == VOL_DOW || results.value == MUTE || results.value == BUTTON_2 || results.value == BUTTON_3 || results.value == BUTTON_4 || results.value == BUTTON_5 || results.value == BUTTON_6 || results.value == BUTTON_7 || results.value == BUTTON_8 || results.value == BUTTON_9 || results.value == BUTTON_0 ) {
strip.fill(strip.Color(0, 0, 0, 0));
strip.show();
break;
}
irrecv.resume();
}
}
}
}
void Button_2() {
if (results.value == BUTTON_2) {
while (results.value == BUTTON_2) {
Serial.println("Button 2 Pressed");
Twinkle(0, 0, 0xff, 0, 10, 10, false);
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
if (results.value == POWER || results.value == VOL_UP || results.value == VOL_DOW || results.value == MUTE || results.value == BUTTON_1 || results.value == BUTTON_3 || results.value == BUTTON_4 || results.value == BUTTON_5 || results.value == BUTTON_6 || results.value == BUTTON_7 || results.value == BUTTON_8 || results.value == BUTTON_9 || results.value == BUTTON_0 ) {
strip.fill(strip.Color(0, 0, 0, 0));
strip.show();
break;
}
irrecv.resume();
}
}
}
}
void Button_3() {
if (results.value == BUTTON_3) {
Serial.println("Button 3 Pressed");
while (results.value == BUTTON_3) {
RGBLoop();
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
if (results.value == POWER || results.value == VOL_UP || results.value == VOL_DOW || results.value == MUTE || results.value == BUTTON_1 || results.value == BUTTON_2 || results.value == BUTTON_4 || results.value == BUTTON_5 || results.value == BUTTON_6 || results.value == BUTTON_7 || results.value == BUTTON_8 || results.value == BUTTON_9 || results.value == BUTTON_0 ) {
strip.fill(strip.Color(0, 0, 0, 0));
strip.show();
break;
}
irrecv.resume();
}
}
}
}
void Button_4() {
if (results.value == BUTTON_4) {
Serial.println("Button 4 Pressed");
while (results.value == BUTTON_4) {
CylonBounce(0xff, 0, 0, 0, 4, 25, 50);
if (irrecv.decode(&results)) {
if (results.value == POWER || results.value == VOL_UP || results.value == VOL_DOW || results.value == MUTE || results.value == BUTTON_1 || results.value == BUTTON_2 || results.value == BUTTON_3 || results.value == BUTTON_5 || results.value == BUTTON_6 || results.value == BUTTON_7 || results.value == BUTTON_8 || results.value == BUTTON_9 || results.value == BUTTON_0 ) {
strip.fill(strip.Color(0, 0, 0, 0));
strip.show();
break;
}
irrecv.resume();
}
}
}
}