// https://www.reddit.com/r/FastLED/comments/1fbrnaz/stroboscopic_effect/

#include <FastLED.h>

#define NUM_LEDS 8

void setup() {
  FastLED.addLeds<WS2812B, 3, GRB>(0, NUM_LEDS);
  FastLED.setMaxRefreshRate(0, false);
}

// calculate how many microseconds between flashes for
// a given RPM
const int rpm = 600;
const int blades = 8;
const int fudge = 7;
const uint32_t rpm_us = 60000000 / rpm / blades - fudge;

void loop() {
  // give the briefest possible flash
  FastLED.showColor(CRGB::White);
  FastLED.showColor(CRGB::Black);

  // when should the next flash happen?
  static uint64_t next_flash_us = micros();
  if ((next_flash_us += rpm_us) < micros())
    next_flash_us = micros();

  // wait until the next flash is due
  while (const uint64_t delay_us = next_flash_us - micros() < rpm_us)
    delayMicroseconds(delay_us);
}
nano:12
nano:11
nano:10
nano:9
nano:8
nano:7
nano:6
nano:5
nano:4
nano:3
nano:2
nano:GND.2
nano:RESET.2
nano:0
nano:1
nano:13
nano:3.3V
nano:AREF
nano:A0
nano:A1
nano:A2
nano:A3
nano:A4
nano:A5
nano:A6
nano:A7
nano:5V
nano:RESET
nano:GND.1
nano:VIN
nano:12.2
nano:5V.2
nano:13.2
nano:11.2
nano:RESET.3
nano:GND.3
neopixels1:GND
neopixels1:VCC
neopixels1:DIN
neopixels1:DOUT
D0D1D2D3D4D5D6D7GNDLOGIC
logic1:D0
logic1:D1
logic1:D2
logic1:D3
logic1:D4
logic1:D5
logic1:D6
logic1:D7
logic1:GND