I have a Flora and 40 neopixels connected to it. Running the strandtest, it works perfectly. Everything lights up. But once I put in my custom code, it fails to light the last 4 of the neopixels and then locks up. This previously worked with 36 lights but now it just crashes.
#include <boarddefs.h>
#include <IRremote.h>
#include <IRremoteInt.h>
#include <ir_Lego_PF_BitStreamEncoder.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#include <Adafruit_NeoPixel.h>
int IRpin = 02; // pin for the IR sensor
IRrecv irrecv(IRpin);
decode_results results;
#define PIN 6
Adafruit_NeoPixel strip = Adafruit_NeoPixel(40, PIN, NEO_RGBW + NEO_KHZ800);
void setup()
{
strip.begin();
strip.show(); // Initialize all pixels to 'off'
irrecv.enableIRIn(); // Start the receiver
}
void loop()
{
uint32_t gold = strip.Color(255, 204, 0, 0);
uint32_t blue = strip.Color(0, 0, 255, 0);
uint32_t green = strip.Color(0, 255, 0, 0);
uint32_t red = strip.Color(255, 0, 0, 0);
uint32_t white = strip.Color(0, 0, 0, 255);
uint32_t black = strip.Color(0, 0, 0, 0);
uint32_t purple = strip.Color(153, 0, 255, 0);
uint32_t gray = strip.Color(102, 102, 102, 0);
uint32_t turquoise = strip.Color(102, 255, 255, 0);
if (irrecv.decode(&results))
{
irrecv.resume(); // Receive the next value
}
switch (results.value)
{
case 16738455://0
for ( int i = 0; i < 36; i++) {
strip.setPixelColor(i, blue);
strip.show();
} // Solid Blue
break;
case 16724175://1
for ( int i = 0; i < 36; i++) {
strip.setPixelColor(i, green);
strip.show();
} // Solid Green
break;
case 16718055://2
for ( int i = 0; i < 36; i++) {
strip.setPixelColor(i, gold);
strip.show();
} // Solid Gold
break;
case 16743045: //3
for ( int i = 0; i < 36; i++) {
strip.setPixelColor(i, red);
strip.show();
} // Solid Red
break;
case 16716015: //4
for ( int i = 0; i < 36; i++) {
strip.setPixelColor(i, white);
strip.show();
} // Solid White
break;
case 16726215: //5
for ( int i = 0; i < 36; i++) {
strip.setPixelColor(i, purple);
strip.show();
} // Solid Purple
break;
case 16753245: //Power
for ( int i = 0; i < 36; i++) {
strip.setPixelColor(i, black);
strip.show();
} // Solid Black
break;
case 16712445: rainbow(20);//Play
// Rainbow
break;
case 16728765: //7
for ( int i = 0; i < 36; i++) {
strip.setPixelColor(i, turquoise);
strip.show();
} // Solid Turquoise
break;
case 16734885: //6
for ( int i = 0; i < 36; i++) {
strip.setPixelColor(i, gray);
strip.show();
} // Solid Gray
break;
}
}
void rainbow(uint8_t wait) {
uint16_t i, j;
for (j = 0; j < 256; j++) {
for (i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, Wheel((i + j) & 255));
}
strip.show();
delay(wait);
}
}
uint32_t Wheel(byte WheelPos) {
WheelPos = 255 - WheelPos;
if (WheelPos < 85) {
return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
}
if (WheelPos < 170) {
WheelPos -= 85;
return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
}
WheelPos -= 170;
return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
}
This is the code I've been working with. I cant see it being a hardware issue, but I'm not sure what the issue with the code might be as it worked previously.
TIA