Trinket + Neopixel debugging

Adafruit's tiny microcontroller platform. Please tell us which board you are using.
For CircuitPython issues, ask in the Adafruit CircuitPython forum.

Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.
Locked
User avatar
mirzam
 
Posts: 5
Joined: Wed Apr 08, 2015 1:49 pm

Trinket + Neopixel debugging

Post by mirzam »

Hi, so I am making a neopixel chain for my daughters bicycle. It is an interesting project as I have to encapsulate and rainproof the project.

I bought a cheap WS2812 neopixel chain (Luxorparts) on Ebay. And I am using a 6V lantern battery which power the neopixel chain directly and through the JST connector to a Flora. A switch is connected to the voltage side of the battery. The chain is working with the Flora. So I replaced my precious Flora for something smaller, a Trinket 5V for a smaller form factor. I checked the Trinket, the code below uploads with no problem at all. The code is similar to that for Flora, the signal pin number is however changed to pin 0 (signal cable is soldered to pin #0 on the Trinket). The Trinket is powered through the BAT-pin voltage and ground pin. The chain will not light up however. So what is wrong?

Code: Select all

#include <Adafruit_NeoPixel.h>

    // Which pin on the Arduino is connected to the NeoPixels?
    // On a Trinket or Gemma we suggest changing this to :
    #define LED_PIN    0
     
    // How many NeoPixels are attached to the Arduino?
    #define LED_COUNT 60
     
    // Declare our NeoPixel strip object:
    Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
    // Argument 1 = Number of pixels in NeoPixel strip
    // Argument 2 = Arduino pin number (most are valid)
    // Argument 3 = Pixel type flags, add together as needed:
    //   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
    //   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
    //   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
    //   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
    //   NEO_RGBW    Pixels are wired for RGBW bitstream (NeoPixel RGBW products)


    void setup() {
      strip.begin();
      strip.show(); // Initialize all pixels to 'off'
    }

void loop() {
  // Some example procedures showing how to display to the pixels:
  colorWipe(strip.Color(255, 0, 0), 50); // Red
  colorWipe(strip.Color(0, 255, 0), 50); // Green
  colorWipe(strip.Color(0, 0, 255), 50); // Blue
  rainbow(20);
  rainbowCycle(20);
}
 
// Fill the dots one after the other with a color
void colorWipe(uint32_t c, uint8_t wait) {
  for(uint16_t i=0; i<strip.numPixels(); i++) {
      strip.setPixelColor(i, c);
      strip.show();
      delay(wait);
  }
}
 
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);
  }
}
 
// Slightly different, this makes the rainbow equally distributed throughout
void rainbowCycle(uint8_t wait) {
  uint16_t i, j;
 
  for(j=0; j<256*5; j++) { // 5 cycles of all colors on wheel
    for(i=0; i< strip.numPixels(); i++) {
      strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
    }
    strip.show();
    delay(wait);
  }
}
 
// Input a value 0 to 255 to get a color value.
// The colours are a transition r - g - b - back to r.
uint32_t Wheel(byte WheelPos) {
  if(WheelPos < 85) {
   return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
  } else if(WheelPos < 170) {
   WheelPos -= 85;
   return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  } else {
   WheelPos -= 170;
   return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
}

User avatar
adafruit_support_bill
 
Posts: 88141
Joined: Sat Feb 07, 2009 10:11 am

Re: Trinket + Neopixel debugging

Post by adafruit_support_bill »

It could be a memory issue. The Trinket has only 1/5 of the RAM compared to the Flora. Try reducing LED_COUNT to see if you can get half of the strip to light. If so, you will need to move to a processor with more memory to light the whole strand.

Code: Select all

    #define LED_COUNT 30

Locked
Please be positive and constructive with your questions and comments.

Return to “Trinket ATTiny, Trinket M0”