FastLED 3.10.6
Loading...
Searching...
No Matches

◆ loop()

void loop ( )

Definition at line 178 of file MoodRing.ino.

178 {
179 const fl::u32 now = millis();
180
181 // Manual audio pump fallback (e.g. WASM / when FastLED.add() didn't take).
182 if (!gAutoPump) {
184 if (sample.isValid() && listen.value()) {
185 gProcessor->update(sample);
186 }
187 }
188
190
191 // Listen, then paint. With listening off every signal eases to calm at
192 // its normal release rate, so the sketch fades into a slow ambient lamp
193 // rather than cutting or going dark.
194 if (listen.value()) {
195 gListener->update(now);
196 } else {
197 gListener->rest(now);
198 }
199 const mood_ring::RoomSense &sense = gListener->sense();
200 gPainter.draw(sense, now, leds);
201
202 // Log regime changes so the listener is observable in the field.
203 static const char *sLastRegime = "";
204 const char *regime = gListener->regimeName();
205 if (regime != sLastRegime) {
206 sLastRegime = regime;
207 fl::printf("MoodRing: regime -> %s\n", regime);
208 }
209 if (debugPrint.value()) {
210 static fl::u32 sFrame = 0;
211 if ((sFrame++ % 30) == 0) printSense(sense);
212 }
213
214 // Brightness.
215 uint8_t finalBrightness;
216 if (autoBrightness.value()) {
217 const float avg = getAverageBrightness(leds);
218 finalBrightness = applyBrightnessCompression(
219 avg, static_cast<uint8_t>(autoBrightnessMax.value()),
222 } else {
223 finalBrightness = static_cast<uint8_t>(brightness.value());
224 }
225 FastLED.setBrightness(finalBrightness);
226 FastLED.show();
227}
CRGB leds[1]
fl::UIAudio audio("Audio Input")
fl::UISlider brightness("Brightness", BRIGHTNESS, 0, 255)
uint8_t applyBrightnessCompression(float inputBrightnessPercent, uint8_t maxBrightness, float lowThreshold, float highThreshold)
float getAverageBrightness(fl::span< const CRGB > leds)
fl::UISlider autoBrightnessLowThreshold("Auto Brightness Low Threshold", 8, 0, 100, 1)
fl::UICheckbox autoBrightness("Auto Brightness", true)
fl::UISlider autoBrightnessHighThreshold("Auto Brightness High Threshold", 22, 0, 100, 1)
fl::UISlider autoBrightnessMax("Auto Brightness Max", 84, 0, 255, 1)
FL_DISABLE_WARNING_PUSH FL_DISABLE_WARNING_GLOBAL_CONSTRUCTORS CFastLED FastLED
Global LED strip management instance.
fl::shared_ptr< mood_ring::RoomListener > gListener
Definition MoodRing.ino:114
mood_ring::MoodPainter gPainter
Definition MoodRing.ino:115
fl::UICheckbox listen("Listen", true)
bool gAutoPump
Definition MoodRing.ino:116
static void applyUiTuning()
Definition MoodRing.ino:150
fl::shared_ptr< fl::audio::Processor > gProcessor
Definition MoodRing.ino:113
fl::UICheckbox debugPrint("Debug: Print Sense", false)
static void printSense(const mood_ring::RoomSense &s)
Definition MoodRing.ino:168
fl::u32 millis()
Universal millisecond timer - returns milliseconds since system startup.
void printf(const char *format) FL_NO_EXCEPT
CRGB sample(const CRGB *grid, const XYMap &xyMap, float x, float y, SampleMode mode)
Sample a pixel from a 2D CRGB grid at floating-point coordinates.
Definition sample.cpp.hpp:9
Everything a visual is allowed to react to.
Definition room_sense.h:31
unsigned char uint8_t
Definition stdint.h:208

References applyBrightnessCompression(), applyUiTuning(), audio, autoBrightness, autoBrightnessHighThreshold, autoBrightnessLowThreshold, autoBrightnessMax, brightness, debugPrint, FastLED, gAutoPump, getAverageBrightness(), gListener, gPainter, gProcessor, leds, listen, fl::printf(), and printSense().

+ Here is the call graph for this function: