Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- File: trig_beatsin
- By: Andrew Tuline
- Date: August, 2021
- Triggered breathing aka sine wave starting at 0, but using beatsin16() instead of a cos function, which starts at 0.
- This version was inspired by:
- https://old.reddit.com/r/FastLED/comments/p45t9r/how_to_restartreset_sinelon_effect_or_beatsin16/
- Although I didn't replicate their results, this seems to work well.
- */
- #include <FastLED.h>
- #define LED_PIN 12
- #define NUM_LEDS 30
- #define COLOR_ORDER GRB
- #define LED_TYPE WS2812B
- #define MAX_BRIGHTNESS 255
- struct CRGB leds[NUM_LEDS];
- void setup() {
- Serial.begin(115200);
- LEDS.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS);
- FastLED.setBrightness(MAX_BRIGHTNESS);
- } // setup()
- void loop() {
- trigbeat(10);
- FastLED.show();
- } // loop()
- void trigbeat(int bpm) {
- static uint32_t previousMillis;
- uint32_t currentMillis = millis();
- if (currentMillis - previousMillis >= bpm * 600) { // Reset after bpm.
- Serial.println("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
- previousMillis = currentMillis;
- }
- fadeToBlackBy(leds, NUM_LEDS, 16);
- uint16_t gPos = beatsin16(bpm, 0, NUM_LEDS - 1, previousMillis, 49152); // bpm, lowest, highest,timebase, phase shift value.
- Serial.print(gPos); Serial.print(" "); Serial.println(previousMillis);
- leds[gPos] = CHSV(0, 255, 192);
- } // trigbeat()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement