Lightning Cloud with Adafruit NeoPixel Digital RGB LED Strip - Black 30 LED

Been trying to get this build completed but cannot get my LED strip to turn on. Code below and every time I connect the Arduino to power only 1 of the 30 LED’s comes to life. New to coding and Arduino, can anyone see something I missed that is keeping the LED strip from lighting up?

No errors verifying the code in IDE

#include <Wire.h>
#include “FastLED.h”

// How many leds in your strip?
#define NUM_LEDS 30
#define DATA_PIN 7

// 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 = CLOUD;
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 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*;
}*_

* 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;*

* } *
}

Hi and welcome to the forum.

This line contains an error and won't compile:

   leds = CHSV( H, 255, 255);

Please check if this matches the line you intended to post.

This is the code that was posted, that supposedly works

Again, total newby to this. Can you tell me what the error is on this line?

Thanks for the help?

I suspect it should be

leds[i] = CHSV( H, 255, 255);

How does that line look in the IDE?

Looks correct in IDE

leds = CHSV( H, 255, 255);
Still only get 1 of the 30 led's to react to sound, the rest are non responsive

BeastMode45:
Looks correct in IDE

leds = CHSV( H, 255, 255);
[/quote]
So it looks right in the IDE but wrong the forum? Do you think the forum could have corrupted your code when you pasted it into the forum? If so, do you think it's important that forum members who may be able to help can see the code you are running?

OK, first things first.

You are getting subtle hints here so far. You need to go and read the forum instructions so that you can go back and modify your original post or posts (not re-post them) - using the “More → Modify” option below the right hand corner of your post - to mark up your code as such using the “</>” icon in the posting window. Just highlight each section of code (or output if you need to post that) from the IDE and click the icon.

In fact, the IDE has a “copy for forum” link to put these markings on a highlighted block for you so you then just paste it here in a posting window. But even before doing that, don’t forget to use the “Auto-Format” (Ctrl-T) option first to make it easy to read. If you do not post it as “code” it can as you now see, be quite garbled and is always more difficult to read due to the font.

It is inappropriate to attach it as a “.ino” file unless it is clearly too long to include in the post proper. People can usually see the mistakes directly and do not want to have to actually load it in their own IDE. And even that would also assume they are using a PC and have the IDE running on that PC.

Also tidy up your blank space. Do use blank lines, but only single blanks between complete functional blocks.