Hi Marie, and thanks for posting your code!
The issue was deeper than I remembered but I have a solution for you. To give some background, the microprocessor, motor driver, and NeoPixels all burn power while idle and we wanted to reduce this to maximize battery life. The sleep modes reduce the power draw from the microprocessor but do not stop the power draw from the motor driver and Neopixels. To stop power draw from these components we included a transistor to cut their power. In the code there are multiple calls to digitalWrite(MOTOR_ENABLE, HIGH) and digitalWrite(MOTOR_ENABLE, LOW), which toggle power to the motor driver and NeoPixels on and off respectively, only giving them power when they are being used. So the reason you could not keep the NeoPixel lit was that the FED3 was still cutting power to the Neopixels independently of the sleep functions.
The solution I came up with was to link the motor/Neopixel power saving behavior to the microprocessor sleep modes. So when sleep modes are enabled FED3 will cut power to the motor driver and Neopixels to save battery life. But when sleep is disabled it will stop doing this. This will now allow you to leave the NeoPixels on for as long as you want. I think this is a good compromise that is not too hacky.
To test this out, update your FED3 library to v1.1.4.0 via the library manager:
This update should work seamlessly with your code, as long as sleep modes are disabled. (Also you can just call fed3.disableSleep(); you don't need to also set enableSleep to false). Please
also write back and let me know if this works for you. As you'll be the first tester
besides me, please let me know if you discover any bugs!
Best,
-Lex