Problems with the FASTLED library

Hi its my first Arduino project and i´m having problems using a code which is using the FastLED library.
When I´m using examples From the Adafruit NeoPixel library the WS2812B led strip is working just perfect.
If I use the FastLed Library everything is just flashing in the wrong colors and is blinking all the time.

I don´t even know if it´s possible but could anyone change this code so its using the Adafruit neopixel library?

Thanks in advance :slight_smile:
This is the project I´m trying to get to work:

/*
Lighting Cloud Mood Lamp By James Bruce
View the full tutorial and build guide at http://www.makeuseof.com/

Sound sampling code originally by Adafruit Industries. Distributed under the BSD license.
This paragraph must be included in any redistribution.
*/

#include <Wire.h>
#include "FastLED.h"

// How many leds in your strip?
#define NUM_LEDS 300
#define DATA_PIN 2

// Mode enumeration - if you want to add additional party or colour modes, add them here; you'll need to map some IR codes to them later;
// and add the modes into the main switch loop
enum Mode { CLOUD, ACID, OFF, ON, RED, GREEN, BLUE, FADE};
Mode mode = FADE;
Mode lastMode = CLOUD;

// Mic settings, shouldn't need to adjust these.
#define MIC_PIN 0 // Microphone is attached to this analog pin
#define DC_OFFSET 0 // DC offset in mic signal - if unusure, leave 0
#define NOISE 10 // Noise/hum/interference in mic signal
#define SAMPLES 10 // Length of buffer for dynamic level adjustment
byte
volCount = 0; // Frame counter for storing past volume data
int
vol[SAMPLES]; // Collection of prior volume samples
int n, total = 30;
float average = 0;

// used to make basic mood lamp colour fading feature
int fade_h;
int fade_direction = -1;

// Define the array of leds
CRGB leds[NUM_LEDS];

void setup() {
// this line sets the LED strip type - refer fastLED documeantion for more details GitHub - FastLED/FastLED: The FastLED library for colored LED animation on Arduino. Please direct questions/requests for help to the FastLED Reddit community: http://fastled.io/r We'd like to use github "issues" just for tracking library bugs / enhancements.
FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
// starts the audio samples array at volume 15.
memset(vol, 15, sizeof(vol));
Serial.begin(115200);
Wire.begin(9); // Start I2C Bus as a Slave (Device Number 9)
Wire.onReceive(receiveEvent); // register event
}

void receiveEvent(int bytes) {

// Here, we set the mode based on the IR signal received. Check the debug log when you press a button on your remote, and
// add the hex code here (you need 0x prior to each command to indicate it's a hex value)
while (Wire.available())
{
unsigned int received = Wire.read();
Serial.print("Receiving IR hex: ");
Serial.println(received, HEX);
lastMode = mode;
switch (received) {
case 0x4F:
mode = ON; break;
case 0x07:
mode = OFF; break;
case 0x57:
mode = CLOUD; break;
case 0xFF:
mode = ACID; break;
case 0xA7:
mode = FADE; break;
case 0x77:
mode = BLUE; break;
case 0x27:
mode = GREEN; break;
case 0x67:
mode = RED; break;

}
}

}

void loop() {

// Maps mode names to code functions.
switch (mode) {
case CLOUD: detect_thunder(); reset(); break;
case ACID: acid_cloud(); reset(); break;
case OFF: reset(); break;
case ON: constant_lightning(); reset(); break;
case RED: single_colour(0); break;
case BLUE: single_colour(160); break;
case GREEN: single_colour(96); break;
case FADE: colour_fade(); break;
default: detect_thunder(); reset(); break;
}

}

// Makes all the LEDs a single colour, see https://raw.githubusercontent.com/FastLED/FastLED/gh-pages/images/HSV-rainbow-with-desc.jpg for H values
void single_colour(int H) {
for (int i = 0; i < NUM_LEDS; i++) {
leds = CHSV( H, 255, 255);

  • }*
  • //avoid flickr which occurs when FastLED.show() is called - only call if the colour changes*
  • if (lastMode != mode) {*
  • FastLED.show();*
  • lastMode = mode;*
  • }*
  • delay(50);*
    }
    void colour_fade() {
  • //mood mood lamp that cycles through colours*
  • for (int i = 0; i < NUM_LEDS; i++) {*
    leds = CHSV( fade_h, 255, 255);
    * }*
    * if (fade_h > 254) {
    fade_direction = -1; //reverse once we get to 254*

    * }*
    * else if (fade_h < 0) {
    fade_direction = 1;
    _
    }_
    fade_h += fade_direction;
    _
    FastLED.show();_
    _
    delay(100);_
    _
    }_
    void detect_thunder() {
    n = analogRead(MIC_PIN); // Raw reading from mic*

    * n = abs(n - 512 - DC_OFFSET); // Center on zero*
    * n = (n <= NOISE) ? 0 : (n - NOISE); // Remove noise/hum*
    * vol[volCount] = n; // Save sample for dynamic leveling*
    * if (++volCount >= SAMPLES) volCount = 0; // Advance/rollover sample counter*
    * total = 0;*
    * for (int i = 0; i < SAMPLES; i++) {*
    _ total += vol*;
    }
    // If you're having trouble getting the cloud to trigger, uncomment this block to output a ton of debug on current averages.
    // Note that this WILL slow down the program and make it less sensitive due to lower sample rate.
    /

    * for(int t=0; t<SAMPLES; t++) {
    //initial data is zero. to avoid initial burst, we ignore zero and just add the current l*
    * Serial.print("Sample item ");
    Serial.print(t);
    Serial.print(":");
    Serial.println(vol[t]);
    }
    Serial.print("total");
    Serial.println(total);
    Serial.print("divided by sample size of ");
    Serial.println(SAMPLES);
    Serial.print("average:");
    Serial.println(average);
    Serial.print("current:");
    Serial.println(n);
    /
    average = (total / SAMPLES) + 2;

    * if (n > average) {
    Serial.println("TRIGGERED");
    reset();
    //I've programmed 3 types of lightning. Each cycle, we pick a random one.
    switch (random(1, 3)) {
    //switch(3){
    case 1:
    thunderburst();
    delay(random(10, 500));
    Serial.println("Thunderburst");
    break;
    case 2:
    rolling();
    Serial.println("Rolling");
    break;
    case 3:
    crack();
    delay(random(50, 250));
    Serial.println("Crack");
    break;
    }
    }
    }
    // utility function to turn all the lights off.
    void reset() {_

    for (int i = 0; i < NUM_LEDS; i++) {
    _ leds = CHSV( 0, 0, 0);
    }
    FastLED.show();
    }
    void acid_cloud() {
    // a modification of the rolling lightning which adds random colour. trippy.
    //iterate through every LED*

    * for (int i = 0; i < NUM_LEDS; i++) {*
    * if (random(0, 100) > 90) {
    leds = CHSV( random(0, 255), 255, 255);
    }
    else {
    leds = CHSV(0, 0, 0);
    }
    }
    FastLED.show();
    delay(random(5, 100));
    reset();
    //}
    }
    void rolling() {
    // a simple method where we go through every LED with 1/10 chance*

    * // of being turned on, up to 10 times, with a random delay wbetween each time*
    * for (int r = 0; r < random(2, 10); r++) {
    //iterate through every LED*

    * for (int i = 0; i < NUM_LEDS; i++) {*
    * if (random(0, 100) > 90) {
    leds = CHSV( 0, 0, 255);
    }
    else {
    //dont need reset as we're blacking out other LEDs her*

    leds = CHSV(0, 0, 0);
    * }
    }
    FastLED.show();
    delay(random(5, 100));
    reset();
    }
    }
    void crack() {
    //turn everything white briefly*

    * for (int i = 0; i < NUM_LEDS; i++) {*
    leds = CHSV( 0, 0, 255);
    * }
    FastLED.show();
    delay(random(10, 100));
    reset();
    }
    void thunderburst() {
    // this thunder works by lighting two random lengths*

    * // of the strand from 10-20 pixels._
    int rs1 = random(0, NUM_LEDS / 2);
    _ int rl1 = random(10, 20);_
    int rs2 = random(rs1 + rl1, NUM_LEDS);
    _ int rl2 = random(10, 20);
    //repeat this chosen strands a few times, adds a bit of realism*

    * for (int r = 0; r < random(3, 6); r++) {
    for (int i = 0; i < rl1; i++) {
    leds[i + rs1] = CHSV( 0, 0, 255);
    }_

    if (rs2 + rl2 < NUM_LEDS) {
    _ for (int i = 0; i < rl2; i++) {
    leds[i + rs2] = CHSV( 0, 0, 255);
    }
    }
    FastLED.show();
    //stay illuminated for a set time*

    * delay(random(10, 50));
    reset();
    delay(random(10, 50));
    }
    }
    // basically just a debug mode to show off the lightning in all its glory, no sound reactivity.
    void constant_lightning() {
    switch (random(1, 10)) {
    case 1:
    thunderburst();
    delay(random(10, 500));
    Serial.println("Thunderburst");
    break;
    case 2:
    rolling();
    Serial.println("Rolling");
    break;
    case 3:
    crack();
    delay(random(50, 250));
    Serial.println("Crack");
    break;
    }
    }*_

I recommend you check out the stickies at the top of the board "How to use this forum" Link: https://forum.arduino.cc/index.php?topic=149017.0

It will also walk you through using code tags to post code. There's a lot of people here that love to help, but you have to do your part and post accordingly.

For instance, the link I pasted above requires the user to copy and paste it rather than clicking on it. Those on mobile devices aren't going to be able to do this easily. Same with pictures...and code.

Thanks a lot I will do this now :slight_smile: