Here is your problem...
do {
colorWipe2(strip.Color(255, 255, 255), 50); // Display all Neopixels as white
clearStrip();
} while (val == HIGH && time >= 10000);
In the loop there is no code to change val or time, so it loops forever. Suggest you add
val = digitalRead(BUTTON);
to the loop. You probably don't need to check time.