Neopixels with VL53L0X distance sensor

I'm building a simple project that uses the VL53L0X distance sensor as input to turn on an RGB LED strip. As I draw my hand back away from the sensor, gradually more lights illuminate along the strip until finally, at a certain distance, the rainbow() function from the Neopixels strand test is called. This is where I run into a problem as the rainbow animation displays but it causes everything to crash and stop responding to input. At first I thought this was because the VL53L0X main function to check distance operates with a call for a delay() function as does the rainbow() function so calling one from the other must be messing it up. So I found an example using millis() and comparing the start time to a desired interval and implemented that instead but it still crashes. Any ideas on how to fix this or is it just not possible?

It will be hard to say what might be wrong with the sketch without seeing it.

1 Like

Its a bit of a Frankenstein's monster as I'm still new to this so please be kind :sweat_smile:

//Adafruit VL53L0X library
#include <Adafruit_VL53L0X.h>
Adafruit_VL53L0X lox = Adafruit_VL53L0X();

// Adafruit NeoPixel library
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
 #include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif

// Which pin on the Arduino is connected to the NeoPixels?
#define PIN        9 
#define PIN2        6 
#define PIN3        5
#define PIN4        3

// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS 15 


Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel pixels2(NUMPIXELS, PIN2, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel pixels3(NUMPIXELS, PIN3, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel pixels4(NUMPIXELS, PIN4, NEO_GRB + NEO_KHZ800);


unsigned long vlStarted = 0;
const long interval = 16;

unsigned long RGBledStarted = 0;
const long RGBinterval = 10;

void setup() {

  pinMode(12, OUTPUT); //pin for speaker
  Serial.begin(115200);

    //wait until serial port opens for native USB devices
    while(! Serial) {
      delay(1);
      }

    //  Serial.println("Adafruit VL53L0X test");
      if(!lox.begin()) {
        Serial.println(F("Failed to boot VL53L0X"));
        while(1);
      }
      //power
      Serial.println(F("VL53L0X API Simple Ranging example\n\n"));
  
  // These lines are specifically to support the Adafruit Trinket 5V 16 MHz.
  // Any other board, you can remove this part (but no harm leaving it):
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
  clock_prescale_set(clock_div_1);
#endif
  // END of Trinket-specific code.

  pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
  pixels.setBrightness(50);
    pixels2.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
  pixels2.setBrightness(50);
   pixels3.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
  pixels3.setBrightness(50);
   pixels4.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
  pixels4.setBrightness(50);
}


void s1(){
  for(int i=0; i<1; i++) { 
    pixels.setPixelColor(i, pixels.Color(51, 0, 255));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(51, 0, 255));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(51, 0, 255));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(51, 0, 255));
    pixels4.show();  
  } 
  for(int i=1; i<15; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 0, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 0, 0));
    pixels4.show();   
  }
  }
  
void s2(){
  for(int i=0; i<1; i++) { 
    pixels.setPixelColor(i, pixels.Color(102, 0, 255));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(102, 0, 255));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(102, 0, 255));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(102, 0, 255));
    pixels4.show();  
  } 
  for(int i=1; i<15; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 0, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 0, 0));
    pixels4.show();   
  }
  }
  void s3(){
  for(int i=0; i<2; i++) { 
    pixels.setPixelColor(i, pixels.Color(153, 0, 255));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(153, 0, 255));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(153, 0, 255));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(153, 0, 255));
    pixels4.show();   
  }
  for(int i=2; i<15; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 0, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 0, 0));
    pixels4.show();   
  }
  }

 void s4(){
  for(int i=0; i<2; i++) { 
    pixels.setPixelColor(i, pixels.Color(204, 0, 255));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(204, 0, 255));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(204, 0, 255));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(204, 0, 255));
    pixels4.show();   
  }
  for(int i=2; i<15; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 0, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 0, 0));
    pixels4.show();   
  }
  }
  

    void s5(){
  for(int i=0; i<3; i++) { 
    pixels.setPixelColor(i, pixels.Color(255, 0, 255));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(255, 0, 255));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(255, 0, 255));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(255, 0, 255));
    pixels4.show(); 
  }  
  for(int i=3; i<15; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 0, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 0, 0));
    pixels4.show();   
  }
  }
 
  void s6(){
  for(int i=0; i<3; i++) { 
    pixels.setPixelColor(i, pixels.Color(255, 0, 204));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(255, 0, 204));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(255, 0, 204));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(255, 0, 204));
    pixels4.show(); 
  }  
  for(int i=3; i<15; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 0, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 0, 0));
    pixels4.show();   
  }
  }
  
    void s7(){
  for(int i=0; i<4; i++) { 
    pixels.setPixelColor(i, pixels.Color(255, 0, 153));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(255, 0, 153));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(255, 0, 153));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(255, 0, 153));
    pixels4.show();   
  }
    for(int i=4; i<15; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 0, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 0, 0));
    pixels4.show();   
  }
  }
 
 void s8(){
  for(int i=0; i<4; i++) { 
    pixels.setPixelColor(i, pixels.Color(255, 0, 102));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(255, 0, 102));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(255, 0, 102));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(255, 0, 102));
    pixels4.show();   
  }
    for(int i=4; i<15; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 0, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 0, 0));
    pixels4.show();   
  }
  }
  
    void s9(){
  for(int i=0; i<5; i++) { 
    pixels.setPixelColor(i, pixels.Color(255, 0, 51));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(255, 0, 51));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(255, 0, 51));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(255, 0, 51));
    pixels4.show();   
  }
    for(int i=5; i<15; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 0, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 0, 0));
    pixels4.show();   
  }
  }
 
void s10(){
  for(int i=0; i<5; i++) { 
    pixels.setPixelColor(i, pixels.Color(255, 0, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(255, 0, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(255, 0, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(255, 0, 0));
    pixels4.show();   
  }
    for(int i=5; i<15; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 0, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 0, 0));
    pixels4.show();   
  }
  }
  
    void s11(){
  for(int i=0; i<6; i++) { 
    pixels.setPixelColor(i, pixels.Color(255, 51, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(255, 51, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(255, 51, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(255, 51, 0));
    pixels4.show();   
  }
    for(int i=6; i<15; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 0, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 0, 0));
    pixels4.show();   
  }
  }
 
 void s12(){
  for(int i=0; i<6; i++) { 
    pixels.setPixelColor(i, pixels.Color(255, 102, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(255, 102, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(255, 102, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(255, 102, 0));
    pixels4.show();   
  }
    for(int i=6; i<15; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 0, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 0, 0));
    pixels4.show();   
  }
  }
  
    void s13(){
  for(int i=0; i<7; i++) { 
    pixels.setPixelColor(i, pixels.Color(255, 153, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(255, 153, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(255, 153, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(255, 153, 0));
    pixels4.show();  
  } 
    for(int i=7; i<15; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 0, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 0, 0));
    pixels4.show();   
  }
  }
  
 void s14(){
  for(int i=0; i<7; i++) { 
    pixels.setPixelColor(i, pixels.Color(255, 204, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(255, 204, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(255, 204, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(255, 204, 0));
    pixels4.show();  
  } 
    for(int i=7; i<15; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 0, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 0, 0));
    pixels4.show();   
  }
  }
  
      void s15(){
  for(int i=0; i<8; i++) { 
    pixels.setPixelColor(i, pixels.Color(255, 255, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(255, 255, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(255, 255, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(255, 255, 0));
    pixels4.show();  
  } 
    for(int i=8; i<15; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 0, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 0, 0));
    pixels4.show();   
  }
  }
 
void s16(){
  for(int i=0; i<8; i++) { 
    pixels.setPixelColor(i, pixels.Color(204, 255, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(204, 255, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(204, 255, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(204, 255, 0));
    pixels4.show();  
  } 
    for(int i=8; i<15; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 0, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 0, 0));
    pixels4.show();   
  }
  }
  
      void s17(){
  for(int i=0; i<9; i++) { 
    pixels.setPixelColor(i, pixels.Color(153, 255, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(153, 255, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(153, 255, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(153, 255, 0));
    pixels4.show();  
  } 
    for(int i=9; i<15; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 0, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 0, 0));
    pixels4.show();   
  }
  }
   
void s18(){
  for(int i=0; i<9; i++) { 
    pixels.setPixelColor(i, pixels.Color(102, 255, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(102, 255, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(102, 255, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(102, 255, 0));
    pixels4.show();  
  } 
    for(int i=9; i<15; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 0, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 0, 0));
    pixels4.show();   
  }
  }
  
      void s19(){
  for(int i=0; i<10; i++) { 
    pixels.setPixelColor(i, pixels.Color(51, 255, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(51, 255, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(51, 255, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(51, 255, 0));
    pixels4.show();  
  } 
    for(int i=10; i<15; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 0, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 0, 0));
    pixels4.show();   
  }
  }
  
 void s20(){
  for(int i=0; i<10; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 255, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 255, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 255, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 255, 0));
    pixels4.show();  
  } 
    for(int i=10; i<15; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 0, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 0, 0));
    pixels4.show();   
  }
  }
  
   void s21(){
  for(int i=0; i<11; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 255, 51));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 255, 51));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 255, 51));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 255, 51));
    pixels4.show();  
  } 
    for(int i=11; i<15; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 0, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 0, 0));
    pixels4.show();   
  }
  }
  
 void s22(){
  for(int i=0; i<11; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 255, 102));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 255, 102));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 255, 102));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 255, 102));
    pixels4.show();  
  } 
    for(int i=11; i<15; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 0, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 0, 0));
    pixels4.show();   
  }
  }
  
   void s23(){
  for(int i=0; i<12; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 255, 153));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 255, 153));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 255, 153));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 255, 153));
    pixels4.show();  
  } 
    for(int i=12; i<15; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 0, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 0, 0));
    pixels4.show();   
  }
  }

   void s24(){
  for(int i=0; i<12; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 255, 204));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 255, 204));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 255, 204));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 255, 204));
    pixels4.show();  
  } 
    for(int i=12; i<15; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 0, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 0, 0));
    pixels4.show();   
  }
  }

      void s25(){
  for(int i=0; i<13; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 255, 255));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 255, 255));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 255, 255));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 255, 255));
    pixels4.show();  
  } 
    for(int i=13; i<15; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 0, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 0, 0));
    pixels4.show();   
  }
  }

void s26(){
  for(int i=0; i<13; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 204, 255));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 204, 255));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 204, 255));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 204, 255));
    pixels4.show();  
  } 
    for(int i=13; i<15; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 0, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 0, 0));
    pixels4.show();   
  }
  }
  

      void s27(){
  for(int i=0; i<14; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 153, 255));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 153, 255));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 153, 255));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 153, 255));
    pixels4.show();  
  } 
    for(int i=14; i<15; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 0, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 0, 0));
    pixels4.show();   
  }
  }
  
void s28(){
  for(int i=0; i<14; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 102, 255));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 102, 255));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 102, 255));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 102, 255));
    pixels4.show();  
  } 
    for(int i=14; i<15; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 0, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 0, 0));
    pixels4.show();   
  }
  }
  
      void s29(){
  for(int i=0; i<15; i++) { // For each pixel...
    // pixels.Color() takes RGB values, from 0,0,0 up to 255,255,255
    // Here we're using a moderately bright blue color:
    pixels.setPixelColor(i, pixels.Color(0, 51, 255));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 51, 255));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 51, 255));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 51, 255));
    pixels4.show();  
  } 
  }

  void s30(){
  for(int i=0; i<15; i++) { // For each pixel...
    // pixels.Color() takes RGB values, from 0,0,0 up to 255,255,255
    // Here we're using a moderately bright blue color:
    pixels.setPixelColor(i, pixels.Color(0, 0, 255));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 0, 255));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 0, 255));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 0, 255));
    pixels4.show();  
  } 
  }
  
    void clearAll4(){
  for(int i=0; i<15; i++) { // For each pixel...
    // pixels.Color() takes RGB values, from 0,0,0 up to 255,255,255
    // Here we're using a moderately bright blue color:
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();   
    pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
    pixels2.show();   
    pixels3.setPixelColor(i, pixels3.Color(0, 0, 0));
    pixels3.show();   
    pixels4.setPixelColor(i, pixels4.Color(0, 0, 0));
    pixels4.show();  
  } 
  }

   
  
void rainbow() {
  unsigned long cMillis = millis();
  if (cMillis - RGBledStarted >= RGBinterval) {
  
  // Hue of first pixel runs 5 complete loops through the color wheel.
  // Color wheel has a range of 65536 but it's OK if we roll over, so
  // just count from 0 to 5*65536. Adding 256 to firstPixelHue each time
  // means we'll make 5*65536/256 = 1280 passes through this loop:
  for(long firstPixelHue = 5*65536; firstPixelHue > 0; firstPixelHue -= 256) {
   
    pixels.rainbow(firstPixelHue);
    pixels2.rainbow(firstPixelHue);
    pixels3.rainbow(firstPixelHue);
    pixels4.rainbow(firstPixelHue);
    
    
    pixels.show(); // Update strip with new contents
     pixels2.show(); // Update strip with new contents
      pixels3.show(); // Update strip with new contents
       pixels4.show(); // Update strip with new contents
    //delay(1);  // Pause for a moment
    
  }

  RGBledStarted = cMillis;
  }
}


void loop() {
  unsigned long currentMillis = millis();
  if (currentMillis - vlStarted >= interval) {
    
//distance sensor stuff:
 VL53L0X_RangingMeasurementData_t measure;
  Serial.print("Reading a measurement... ");
  lox.rangingTest(&measure, false); //pass in 'true' to get debug data

  if(measure.RangeStatus != 4) { //phase failures have incorrect data
    Serial.print("Distance (mm): "); Serial.println(measure.RangeMilliMeter);
    
  
  
   if(measure.RangeMilliMeter < 40){
  noTone(12);
  clearAll4();
  }
  if(measure.RangeMilliMeter >= 40 && measure.RangeMilliMeter < 50){
  tone(12, 196); //g
  s1();
  }
    if(measure.RangeMilliMeter >= 50 && measure.RangeMilliMeter < 60){
  tone(12, 220); //a
  s2();
  }
    if(measure.RangeMilliMeter >= 60 && measure.RangeMilliMeter < 70){
  tone(12, 233); //a#
  s3();
  }
    if(measure.RangeMilliMeter >= 70 && measure.RangeMilliMeter < 80){
  tone(12, 262); //c
  s4();
  }
    if(measure.RangeMilliMeter >= 80 && measure.RangeMilliMeter < 90){
  tone(12, 294); //d
  s5();
  }
    if(measure.RangeMilliMeter >= 90 && measure.RangeMilliMeter < 100){
  tone(12, 311); //d#
  s6();
  }
    if(measure.RangeMilliMeter >= 100 && measure.RangeMilliMeter < 110){
  tone(12, 349); //f
  s7();
  }
    if(measure.RangeMilliMeter >= 110 && measure.RangeMilliMeter < 120){
  tone(12, 392); //g
  s8();
  }
    if(measure.RangeMilliMeter >= 120 && measure.RangeMilliMeter < 130){
  tone(12, 440); //a
  s9();
  }
    if(measure.RangeMilliMeter >= 130 && measure.RangeMilliMeter < 140){
  tone(12, 466); //a#
  s10();
  }
    if(measure.RangeMilliMeter >= 140 && measure.RangeMilliMeter < 150){
  tone(12, 523); //c
  s11();
  }
    if(measure.RangeMilliMeter >= 150 && measure.RangeMilliMeter < 160){
  tone(12, 587); //d
  s12();
  }
    if(measure.RangeMilliMeter >= 160 && measure.RangeMilliMeter < 170){
  tone(12, 622); //d#
  s13();
  }
    if(measure.RangeMilliMeter >= 170 && measure.RangeMilliMeter < 180){
  tone(12, 698); //f
  s14();
  }
    if(measure.RangeMilliMeter >= 180 && measure.RangeMilliMeter < 190){
  tone(12, 784); //g
  s15();
  }
    if(measure.RangeMilliMeter >= 190 && measure.RangeMilliMeter < 200){
  tone(12, 880); //a
  s16();
  }
    if(measure.RangeMilliMeter >= 200 && measure.RangeMilliMeter < 210){
  tone(12, 932); //a#
  s17();
  }
    if(measure.RangeMilliMeter >= 210 && measure.RangeMilliMeter < 220){
  tone(12, 1047); //c
  s18();
  }
    if(measure.RangeMilliMeter >= 220 && measure.RangeMilliMeter < 230){
  tone(12, 1175); //d
  s19();
  }
    if(measure.RangeMilliMeter >= 230 && measure.RangeMilliMeter < 240){
  tone(12, 1244); //d#
  s20();
  }
   if(measure.RangeMilliMeter >= 240 && measure.RangeMilliMeter < 250){
  tone(12, 1397); //f
  s21();
  }
    if(measure.RangeMilliMeter >= 250 && measure.RangeMilliMeter < 260){
  tone(12, 1568); //g
  s22();
  }
    if(measure.RangeMilliMeter >= 260 && measure.RangeMilliMeter < 270){
  tone(12, 1760); //a
  s23();
  }
    if(measure.RangeMilliMeter >= 270 && measure.RangeMilliMeter < 280){
  tone(12, 1865); //a#
  s24();
  }
    if(measure.RangeMilliMeter >= 280 && measure.RangeMilliMeter < 290){
  tone(12, 2093); //c
  s25();
  }
    if(measure.RangeMilliMeter >= 290 && measure.RangeMilliMeter < 300){
  tone(12, 2349); //d
  s26();
  }
    if(measure.RangeMilliMeter >= 300 && measure.RangeMilliMeter < 310){
  tone(12, 2489); //d#
  s27();
  }
    if(measure.RangeMilliMeter >= 310 && measure.RangeMilliMeter < 320){
  tone(12, 2794); //f
  s28();
  }
    if(measure.RangeMilliMeter >= 320 && measure.RangeMilliMeter < 330){
  tone(12, 3136); //g
  s29();
  }
    if(measure.RangeMilliMeter >= 330 && measure.RangeMilliMeter < 340){
  tone(12, 3520); //a
  s30();
  }
   
    if(measure.RangeMilliMeter > 339 && measure.RangeMilliMeter < 900){
 tone(12, 3729); //a#
//  s1();
  rainbow();
  }
  
if(measure.RangeMilliMeter >= 900){
  noTone(12);
    clearAll4();
  }
  
  } else {
    Serial.println(" out of range ");
   
    noTone(12);
    clearAll4();
  }
  
 
 vlStarted = currentMillis;
  //delay(16);

  }
  }


This forum IS kind. If somebody woud post something unfriendly this person receives a warning or a temporary ban from the forum.

A good way to learn how to code is to get feedback what can be improved.

as a short hint (which is too less to be really instructive)
Your code has a lot of similiar lines.
You can use parameters and you can use arrays to shorten your code.

parameters are something that will take 1 to 3 hours to understand.
arrays will take 1 to 3 hours too.

You should

explicitly NOT

apply parameters and arrays immidiately to your code
You should learn the basic principles with small demo-codes.
Believe me than it will take you 1 to 3 hours.
If you try to apply it after 10 minutes reading to your code you will mess around with bugs for ten times long 10 to 30 hours.

I recommend that you work through this tutorial
Arduino Programming Course

It is easy to understand and has a good mixture between explaining important concepts and example-codes to get you going. So give it a try and report your opinion about this tutorial.

How many neopixels are in line on one IO-pin. If you are below 250 per IO-pin you can put them all on one dataline and use an offset for accessing the next part

best regards Stefan

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.