What's wrong? Controlling void loops with integers.

int TSL230_samples = 30; //higher = slower but more stable and accurate
boolean once;

Here, "once" is false, and it will stay that way until you change it.