Line Length Limitations

For makers who have purchased an Adafruit Starter Pack, get help with the tutorials here!

Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.
User avatar
janbo
 
Posts: 7
Joined: Wed May 03, 2017 10:56 am

Line Length Limitations

Post by janbo »

Is there a line length limitation for the Adafruit_NeoPixal ?

Built this color organ with 300 lights and only half will light with daisy chaining the strips data line.
If I split the 300 leds into two lines and connect the data lines to the output of your color organ most of them will light except the last 10.

I used ws2812B and power supply is 5 volts at 60amp also run the power lines to two points on each strip which are seven and put a 1000mfd cap on each strip.

Bought a controller and all LEDs light and am able to change which color I want. Power draw with white LEDs is about 10 amps and color is around 4-5.

Color organ seems to work with 150 LEDs but any more one or two strips will not light.

Check the output of color organ (scope) and is some ringing before 100 resistor, after much less. Output is around 5 volts. Have tried powering the color organ with a separate power supply and using the power supply which I am using for the LEDs thinking I may have a ground loop problem, no different.

Below is location of article and plans for color organ
http://www.craigandheather.net/docs/Tee ... rticle.pdf

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

Re: Line Length Limitations

Post by adafruit_support_bill »

Please post the code that you are using.

User avatar
janbo
 
Posts: 7
Joined: Wed May 03, 2017 10:56 am

Re: Line Length Limitations

Post by janbo »

Copy of code

Code: Select all

/*
   Teensy Color Organ FFT

     File: TeensyColorOrgan-FFT.ino - Purpose: Main program for 8 band digital color organ
     based on 1024 point FFT

     The hardware and software detailed within implements a digital color organ
     Features include:
       Input from a built-in microphone or line level inputs
       Automatic volume control
       Programmable density of LEDs / band
       The ability to store/load current color organ configuration to/from files on the SD memory card
       Special color dynamics mode where LED assigned to a band can change position periodicly

    Hardware
      The following hardware items are used in this project
      1. Teensy 3.1/3.2 Micro Controller - pjrc.com
      2. Teensy Audio Adapter Board - pjrc.com
      3. Color 320x240 Touchscreen, 2.8 inch, ILI9341 Controller - pjrc.com
      4. 1 MB (or larger) micro SD card
      5. 74AHCT125 quad level shifter
      6. (2) 100 ohm resistors
      7. Minature SPST pushbutton switch
      8. 5 volts DC power supply capable of at least 3 AMPs of continuous current
      9. 5 volt WS2812B LED strip with density of 30 LEDs/meter. One length of 120 LEDs

    Software
      The following software was used to compile this code
      1. Arduino IDE Version: 1.6.9 - https://www.arduino.cc/en/Main/Software
      2. Teensyduino Version: 1.29 - https://www.pjrc.com/teensy/td_download.html
      3. ILI9341_t3 LCD driver - https://github.com/PaulStoffregen/ILI9341_t3
      4. XPT2046 touch screen driver -  https://github.com/PaulStoffregen/XPT2046_Touchscreen
      5. The Audio library - https://github.com/PaulStoffregen/Audio
      6. Adafruit Neopixel library - https://github.com/adafruit/Adafruit_NeoPixel

   Color Organ Concept, Design and Implementation by: Craig A. Lindley
   Version: 0.5
   Last Update: 09/12/2016

   Copyright (c) 2016, Craig A. Lindley - [email protected]

   Permission is hereby granted, free of charge, to any person obtaining a copy
   of this software and associated documentation files (the "Software"), to deal
   in the Software without restriction, including without limitation the rights
   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
   copies of the Software, and to permit persons to whom the Software is
   furnished to do so, subject to the following conditions:

   The above copyright notice, development funding notice, and this permission
   notice shall be included in all copies or substantial portions of the Software.

   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
   THE SOFTWARE.
*/

#include <Arduino.h>
#include <Audio.h>
#include <SD.h>
#include <SPI.h>
#include <SerialFlash.h>
#include <ILI9341_t3.h>
#include <XPT2046_Touchscreen.h>
#include <Adafruit_NeoPixel.h>

#include "PrintExtensions.h"
#include "GUI_Elements.h"

// Thresholds
#define VU_THRESHOLD          0.1
#define BAND_THRESHOLD        0.09

// Mic preamp gain in dB
#define DEFAULT_MIC_GAIN_DB   0

#define USE_GAMMA_CORRECTION false
#define NUMBER_OF_BANDS       8
#define LEDS_PER_BAND        15
#define NUMBER_OF_LEDS       (NUMBER_OF_BANDS * LEDS_PER_BAND)

#define SCREEN_ROTATION       3

// Describes the 1024 point FFT bin range for a octave based band
typedef struct {
  int lowBinNumber, highBinNumber;
} BIN_CONFIG;

// 8 band array of Bin Configs
BIN_CONFIG bins[NUMBER_OF_BANDS] = {
  1,   2, // Band: 0, LF: 43, HF: 86
  2,   4, // Band: 1, LF: 86, HF: 172
  4,   8, // Band: 2, LF: 172, HF: 344
  8,  16, // Band: 3, LF: 344, HF: 689
  16,  32, // Band: 4, LF: 689, HF: 1378
  32,  64, // Band: 5, LF: 1378, HF: 2756
  64, 128, // Band: 6, LF: 2756, HF: 5512
  128, 256  // Band: 7, LF: 5512, HF: 11025
};

// Color Organ Audio Components and Interconnectivity
AudioInputI2S        BANNED;
AudioMixer4          mixer;
AudioControlSGTL5000 audioController;

// Define the peak detectors
AudioAnalyzePeak     leftInputDetector;
AudioAnalyzePeak     rightInputDetector;

// FFT device
AudioAnalyzeFFT1024  fft;

// Define the interconnects
AudioConnection      patchCord1(BANNED, 0, mixer, 0);
AudioConnection      patchCord2(BANNED, 0, leftInputDetector, 0);
AudioConnection      patchCord3(BANNED, 1, mixer, 1);
AudioConnection      patchCord4(BANNED, 1, rightInputDetector, 0);
AudioConnection      patchCord5(mixer, fft);

// States of the color organ Finite State Machine (FSM)
// States must be defined before the screens that use them are defined
enum STATES {
  INITIALIZATION_STATE,

  // Screen Initialization  Screen Execution
  MAIN_SCR_INIT_STATE,      MAIN_SCR_STATE,
  CONFIG_SCR_INIT_STATE,    CONFIG_SCR_STATE,
  DENSITY_SCR_INIT_STATE,   DENSITY_SCR_STATE,
  MISC_SCR_INIT_STATE,      MISC_SCR_STATE,
  FILES_SCR_INIT_STATE,     FILES_SCR_STATE,

  // Data acquisition state
  ACQUIRE_DATA_STATE,

  // Check dynamics state
  CHECK_DYNAMICS_STATE,
};

// Current operational configuration of the color organ
typedef struct {

  // Global parameters
  bool micInput;
  bool avcOn;
  unsigned long dynamicsIntervalMins;
  int ledDensity;

} ConfigurationData;

#define CONFIG_DATA_SIZE sizeof(ConfigurationData)

// Create the configuration data record
ConfigurationData configurationData;

#include "Colors.h"
#include "LEDOutputControl.h"
LEDOutputControl ledOutputControl;

// Now include all of the screen definitions
#include "BaseScreen.h"

#include "Screen_Main.h"
MainScreen mainScreen;

#include "Screen_Config.h"
ConfigScreen configScreen;

#include "Screen_Density.h"
DensityScreen densityScreen;

#include "Screen_Misc.h"
MiscScreen miscScreen;

#include "Screen_Files.h"
FilesScreen filesScreen;

// State machine state variables
STATES currentState;
STATES savedState;

/************************************************************************/
/*                     Library Object Instantiations                    */
/************************************************************************/

// LCD parameters
#define LCD_DC_PIN    20
#define LCD_CS_PIN    21
#define LCD_RST_PIN  255  // 255 = unused, connected to 3.3V
#define LCD_MOSI_PIN   7
#define LCD_SCLK_PIN  14
#define LCD_MISO_PIN  12

ILI9341_t3 lcd(LCD_CS_PIN, LCD_DC_PIN, LCD_RST_PIN, LCD_MOSI_PIN, LCD_SCLK_PIN, LCD_MISO_PIN);

// Touch controller parameters
#define T_CS_PIN    8
#define T_IRQ_PIN   2
XPT2046_Touchscreen touch(T_CS_PIN, T_IRQ_PIN);

// SD memory card parameters
#define SDCARD_CS_PIN   10
#define SDCARD_MOSI_PIN  7
#define SDCARD_SCK_PIN  14

// LED strip parameters
#define LED_STRIP_PIN    3
Adafruit_NeoPixel ledStrip(NUMBER_OF_LEDS, LED_STRIP_PIN, NEO_GRB + NEO_KHZ800);

// Configure the color organ hardware to match the configuration data
void configureColorOrgan(void) {

  // Enable the audio controller and configure it
  audioController.enable();
  delay(200);

  audioController.audioPreProcessorEnable();
  audioController.surroundSoundDisable();
  audioController.enhanceBassDisable();
  audioController.eqSelect(0);
  audioController.micGain(DEFAULT_MIC_GAIN_DB); // Mic gain
  audioController.volume(0);  // Turn off headphone output
  audioController.muteHeadphone();
  audioController.muteLineout();

  // Auto Volume Control settings
  audioController.autoVolumeControl(1, 1, 0, -10, 0.5, 0.5);
  configurationData.avcOn ? audioController.autoVolumeEnable() : audioController.autoVolumeDisable();

  audioController.inputSelect(configurationData.micInput ? AUDIO_INPUT_MIC : AUDIO_INPUT_LINEIN);

  // Setup mixer so stereo to mono conversion doesn't clip
  // Gains on channels 2 and 3 set to zero to turn them off
  mixer.gain(0, 0.4);
  mixer.gain(1, 0.4);
  mixer.gain(2, 0.0);
  mixer.gain(3, 0.0);

  // Setup LED densities
  ledOutputControl.assignLEDsBasedOnDensity();

  // Setup LED colors for each band
  ledOutputControl.calculateBandColors();
}

// Used to map a floating point value in range 0.0 .. 1.0 to int in range 0 .. 255
int mapFloat(float x, float in_min, float in_max, int out_min, int out_max) {
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}

/************************************************************************/
/*                             Program Setup                            */
/************************************************************************/

void setup() {

  // Configure audio memory
  AudioMemory(30);

  // Setup serial communication for debugging
  Serial.begin(115200);
  delay(2000);

  // Setup SD card SPI interface
  SPI.setMOSI(SDCARD_MOSI_PIN);
  SPI.setSCK(SDCARD_SCK_PIN);

  // Test that the SD card is working
  if (! SD.begin(SDCARD_CS_PIN)) {
    // Stop here, but print a message repetitively
    while (1) {
      Serial.println("Unable to access the SD card");
      delay(500);
    }
  }

  // Initialize and configure LCD screen
  lcd.begin();

  // Clear screen
  lcd.fillScreen(ILI9341_BLACK);

  // Rotate the display into correct orientation
  lcd.setRotation(SCREEN_ROTATION);

  // Don't allow text wrapping
  lcd.setTextWrap(false);

  // Initialize the touch screen controller
  touch.begin();

  // Initialize the LED strip driver and turn all LEDs off
  ledStrip.begin();
  ledStrip.show();

  // Set initial state of FSM
  currentState = INITIALIZATION_STATE;
}

/************************************************************************/
/*                              Main Program                            */
/************************************************************************/

// Dynamics timer
elapsedMillis dynamicsTimer;

// Loop runs the color organ's FSM
void loop() {

  float data;
  bool leftVUReset, rightVUReset;

  switch (currentState) {

    case INITIALIZATION_STATE:

      // Initialize timer
      dynamicsTimer                          = 0;
      leftVUReset = rightVUReset             = false;

      // Install operational defaults
      configurationData.micInput             = true;
      configurationData.avcOn                = true;
      configurationData.dynamicsIntervalMins = 2;
      configurationData.ledDensity           = 25;

      // Make color organ match configuration data
      configureColorOrgan();

      // Setup for next state
      savedState = MAIN_SCR_INIT_STATE;
      currentState = ACQUIRE_DATA_STATE;
      break;

    case MAIN_SCR_INIT_STATE:
      mainScreen.init();
      savedState = MAIN_SCR_STATE;
      currentState = ACQUIRE_DATA_STATE;
      break;

    case MAIN_SCR_STATE:
      savedState = mainScreen.run();
      currentState = ACQUIRE_DATA_STATE;
      break;

    case CONFIG_SCR_INIT_STATE:
      configScreen.init();
      savedState = CONFIG_SCR_STATE;
      currentState = ACQUIRE_DATA_STATE;
      break;

    case CONFIG_SCR_STATE:
      savedState = configScreen.run();
      currentState = ACQUIRE_DATA_STATE;
      break;

    case DENSITY_SCR_INIT_STATE:
      densityScreen.init();
      savedState = DENSITY_SCR_STATE;
      currentState = ACQUIRE_DATA_STATE;
      break;

    case DENSITY_SCR_STATE:
      savedState = densityScreen.run();
      currentState = ACQUIRE_DATA_STATE;
      break;

    case MISC_SCR_INIT_STATE:
      miscScreen.init();
      savedState = MISC_SCR_STATE;
      currentState = ACQUIRE_DATA_STATE;
      break;

    case MISC_SCR_STATE:
      savedState = miscScreen.run();
      currentState = ACQUIRE_DATA_STATE;
      break;

    case FILES_SCR_INIT_STATE:
      filesScreen.init();
      savedState = FILES_SCR_STATE;
      currentState = ACQUIRE_DATA_STATE;
      break;

    case FILES_SCR_STATE:
      savedState = filesScreen.run();
      currentState = ACQUIRE_DATA_STATE;
      break;

    case ACQUIRE_DATA_STATE:
      if (fft.available()) {
        for (int band = 0; band < NUMBER_OF_BANDS; band++) {
          int lowBinNumber  = bins[band].lowBinNumber;
          int highBinNumber = bins[band].highBinNumber;
          data = fft.read(lowBinNumber, highBinNumber);
          data = (data > 1.0) ? 1.0 : data;

          if (data > BAND_THRESHOLD) {
            ledOutputControl.setBandLEDsToColorValue(band, mapFloat(data, 0.0, 1.0, 0, 255));
          } else  {
            ledOutputControl.setBandLEDsToColorValue(band, 0);
          }
        }
      }

      // Display the VU meters when on the main screen
      if (savedState == MAIN_SCR_STATE) {
        if (leftInputDetector.available()) {
          data = leftInputDetector.read();
          if (data > VU_THRESHOLD) {
            leftVUMeter.setValue(data);
            leftVUReset = false;
          } else  {
            if (! leftVUReset) {
              leftVUMeter.clearVUMeter();
              leftVUReset = true;
            }
          }
        }

        if (rightInputDetector.available()) {
          data = rightInputDetector.read();
          if (data > VU_THRESHOLD) {
            rightVUMeter.setValue(data);
            rightVUReset = false;
          } else  {
            if (! rightVUReset) {
              rightVUMeter.clearVUMeter();
              rightVUReset = true;
            }
          }
        }
      }
      // Setup next state
      currentState = CHECK_DYNAMICS_STATE;
      break;

    case CHECK_DYNAMICS_STATE:
      // Is dynamics on ?
      if (configurationData.dynamicsIntervalMins != 0) {
        // Is it time to dynamically update LED placement ?
        if (dynamicsTimer > (((unsigned long) configurationData.dynamicsIntervalMins) * 60 * 1000)) {
          // Yes it is so reset the dynamics timer
          dynamicsTimer = 0;

          // Update LED placements
          ledOutputControl.assignLEDsBasedOnDensity();
        }
      }

      // Return to the active state
      currentState = savedState;
      break;
  }
}
Last edited by adafruit_support_bill on Wed May 03, 2017 2:02 pm, edited 1 time in total.
Reason: Please use [code] tags when submitting code to the forums

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

Re: Line Length Limitations

Post by adafruit_support_bill »

Code: Select all

#define USE_GAMMA_CORRECTION false
#define NUMBER_OF_BANDS       8
#define LEDS_PER_BAND        15
#define NUMBER_OF_LEDS       (NUMBER_OF_BANDS * LEDS_PER_BAND)
Your code defines NUMBER_OF_LEDS to be 15 * 8 = 120. And that number is used when you define the strip:

Code: Select all

// LED strip parameters
#define LED_STRIP_PIN    3
Adafruit_NeoPixel ledStrip(NUMBER_OF_LEDS, LED_STRIP_PIN, NEO_GRB + NEO_KHZ800);
If your strip is longer than that, you need to change your code to match.

User avatar
janbo
 
Posts: 7
Joined: Wed May 03, 2017 10:56 am

Re: Line Length Limitations

Post by janbo »

So I would change it to this?

#define USE_GAMMA_CORRECTION false
#define NUMBER_OF_BANDS 7
#define LEDS_PER_BAND 34
#define NUMBER_OF_LEDS 238 (NUMBER_OF_BANDS * LEDS_PER_BAND)

Not sure what this means.
/ LED strip parameters
#define LED_STRIP_PIN 3
Adafruit_NeoPixel ledStrip(NUMBER_OF_LEDS, LED_STRIP_PIN, NEO_GRB + NEO_KHZ800);

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

Re: Line Length Limitations

Post by adafruit_support_bill »

Not sure what this means.
That is the code that defines your LED strip.

User avatar
Franklin97355
 
Posts: 23903
Joined: Mon Apr 21, 2008 2:33 pm

Re: Line Length Limitations

Post by Franklin97355 »

Check out the NeoPixel Uberguide.

User avatar
janbo
 
Posts: 7
Joined: Wed May 03, 2017 10:56 am

Re: Line Length Limitations

Post by janbo »

#define NUMBER_OF_LEDS 277
When I put in the number of LEDs the file will not compile, remove it and then it will.

Any ideas as to why?

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

Re: Line Length Limitations

Post by adafruit_support_bill »

Please post your code. And also the error messages you are seeing.

User avatar
janbo
 
Posts: 7
Joined: Wed May 03, 2017 10:56 am

Re: Line Length Limitations

Post by janbo »

Code was posted May 3.. above.

User avatar
Franklin97355
 
Posts: 23903
Joined: Mon Apr 21, 2008 2:33 pm

Re: Line Length Limitations

Post by Franklin97355 »

And what are the errors when you try to compile? Set verbose mode in the file preferences and post the output.

User avatar
janbo
 
Posts: 7
Joined: Wed May 03, 2017 10:56 am

Re: Line Length Limitations

Post by janbo »

Arduino: 1.8.1 (Windows 10), TD: 1.35, Board: "Teensy 3.2 / 3.1, Serial, 96 MHz (overclock), Fast, US English"(x86)\Arduino\hardware\teensy\avr\libraries\Adafruit_NeoPixel" "-IC:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\Wire" "C:\Users\Ron\AppData\Local\Temp\arduino_build_5393\sketch\TeensyColorOrgan-FFT.ino.cpp" -o "C:\Users\Ron\AppData\Local\Temp\arduino_build_5393\sketch\TeensyColorOrgan-FFT.ino.cpp.o"
C:\Users\Ron\AppData\Local\Temp\arduino_build_5393\sketch\LEDOutputControl.h: In member function 'void LEDOutputControl::assignBandLEDs()':

C:\Users\Ron\AppData\Local\Temp\arduino_modified_sketch_42815\TeensyColorOrgan-FFT.ino:83:65: error: expression cannot be used as a function

#define NUMBER_OF_LEDS 272 (NUMBER_OF_BANDS * LEDS_PER_BAND)

^

C:\Users\Ron\AppData\Local\Temp\arduino_build_5393\sketch\LEDOutputControl.h:68:30: note: in expansion of macro 'NUMBER_OF_LEDS'

ledPick = random(NUMBER_OF_LEDS);

^

C:\Users\Ron\AppData\Local\Temp\arduino_modified_sketch_42815\TeensyColorOrgan-FFT.ino: At global scope:

C:\Users\Ron\AppData\Local\Temp\arduino_modified_sketch_42815\TeensyColorOrgan-FFT.ino:83:65: error: expression cannot be used as a function

#define NUMBER_OF_LEDS 272 (NUMBER_OF_BANDS * LEDS_PER_BAND)

^

C:\Users\Ron\AppData\Local\Temp\arduino_modified_sketch_42815\TeensyColorOrgan-FFT.ino:210:28: note: in expansion of macro 'NUMBER_OF_LEDS'

Adafruit_NeoPixel ledStrip(NUMBER_OF_LEDS, LED_STRIP_PIN, NEO_GRB + NEO_KHZ800);

^

Multiple libraries were found for "SD.h"
Used: C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\SD
Not used: C:\Program Files (x86)\Arduino\libraries\SD
Using library Audio at version 1.3 in folder: C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\Audio
Using library SPI at version 1.0 in folder: C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\SPI
Using library SD at version 1.0.8 in folder: C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\SD
Using library SerialFlash at version 0.4 in folder: C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\SerialFlash
Using library ILI9341_t3 at version 1.0 in folder: C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\ILI9341_t3
Using library XPT2046_Touchscreen at version 1.2 in folder: C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\XPT2046_Touchscreen
Using library Adafruit_NeoPixel at version 1.0.4 in folder: C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\Adafruit_NeoPixel
Using library Wire at version 1.0 in folder: C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\Wire
Error compiling for board Teensy 3.2 / 3.1.

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

Re: Line Length Limitations

Post by adafruit_support_bill »

C:\Users\Ron\AppData\Local\Temp\arduino_modified_sketch_42815\TeensyColorOrgan-FFT.ino:83:65: error: expression cannot be used as a function

#define NUMBER_OF_LEDS 272 (NUMBER_OF_BANDS * LEDS_PER_BAND)
You are defining NUMBER_OF_LEDS as "272 (NUMBER_OF_BANDS * LEDS_PER_BAND)" which makes no sense, since "272" is not a valid name for a function.

If you want it to be 272, then define it so:

Code: Select all

#define NUMBER_OF_LEDS 272

User avatar
janbo
 
Posts: 7
Joined: Wed May 03, 2017 10:56 am

Re: Line Length Limitations

Post by janbo »

Have 8 bands with 34 LEDs in each band this comes to a total of 272 LEDs. I don't understand what a valid name should be.

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

Re: Line Length Limitations

Post by adafruit_support_bill »

If you want to define it that way, then just change your definition of LEDS_PER_BAND

Code: Select all

#define USE_GAMMA_CORRECTION false
#define NUMBER_OF_BANDS       8
#define LEDS_PER_BAND        34
#define NUMBER_OF_LEDS       (NUMBER_OF_BANDS * LEDS_PER_BAND)

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

Return to “Arduino Starter Pack”