I have written this function that I have isolated into an infinite while loop. I have no idea how but somehow it is able to escape the loop (while(pulse_complete == false)) without the condition being met!? I must be doing something very obviously daft! However, I cannot see it.
Any suggestions?
while(1){
PulseLEDsBlue();
}
void PulseLEDsBlue(){
unsigned long timer = millis();
uint8_t intensity = 99;
uint8_t charge_up = false;
pulse_complete = false;
Serial.println("point 2.0 ");
while(pulse_complete == false){
Serial.print("point 2.1 ");
Serial.println(intensity);
pulse_complete = true;
Serial.println(pulse_complete);
if(millis()-timer>delay_pulsing){
for(uint8_t i = 0; i<NUM_LEDS_SIDE; i++){
LedsSide[i] = LedsSide[i].setRGB(blue_r_ring_d[intensity],blue_g_ring_d[intensity],blue_b_ring_d[intensity]);
}
for(uint8_t i = 0; i<NUM_LEDS_RING ; i++){
LedsRingR[i] = LedsRingR[i].setRGB(blue_r_ring_d[intensity],blue_g_ring_d[intensity],blue_b_ring_d[intensity]);
LedsRingL[i] = LedsRingL[i].setRGB(blue_r_ring_d[intensity],blue_g_ring_d[intensity],blue_b_ring_d[intensity]);
}
if(intensity>=99){
Serial.println("point 2.2");
Serial.println(pulse_complete);
pulse_complete = true;
} else {
Serial.println("point 2.3");
Serial.println(pulse_complete);
pulse_complete = false;
}
if(intensity==0){
Serial.println("point 2.4");
Serial.println(pulse_complete);
charge_up = true;
}
if(intensity>=99){
Serial.println("point 2.5");
Serial.println(pulse_complete);
charge_up = false;
}
if(charge_up){
Serial.println("point 2.6");
Serial.println(pulse_complete);
intensity++;
}
if(!charge_up){
Serial.println("point 2.7");
Serial.println(pulse_complete);
intensity--;
}
FastLED.show();
timer = millis();
}
}
}
The output from the serial looks like this.
point 2.0
point 2.1 99
1
point 2.2
1
point 2.5
1
point 2.7
1
And then keeps repeating.