// https://wokwi.com/projects/391201323959906305
// https://forum.arduino.cc/t/built-in-and-out-led-effect-direction-help/1230282

# include <Adafruit_NeoPixel.h>

# define PIN  7
# define SIZE 7

Adafruit_NeoPixel strip = Adafruit_NeoPixel(7, PIN, NEO_GRB + NEO_KHZ800);

# define kT1  50      // travel
# define kT2  700     // arrive
# define kT3  3000    // dwell

int table[][2] =
{//  0123456
  {  1, kT1},
  {  2, kT1},
  {  4, kT1},
  {  8, kT1},
  { 16, kT1},
  { 32, kT1},
  { 64, kT2},
  { 65, kT1},
  { 66, kT1},
  { 68, kT1},
  { 72, kT1},
  { 80, kT1},
  { 96, kT2},
  { 97, kT1},
  { 98, kT1},
  {100, kT1},
  {104, kT1},
  {112, kT2},
  {113, kT1},
  {114, kT1},
  {116, kT1},
  {120, kT2},
  {121, kT1},
  {122, kT1},
  {124, kT2},
  {125, kT1},
  {126, kT2},
  {127, kT3},
  { 63, kT2},
  { 95, kT1},
  { 31, kT2},
  { 47, kT1},
  { 79, kT1},
  { 15, kT2},
  { 23, kT1},
  { 39, kT1},
  { 71, kT1},
  {  7, kT2},
  { 11, kT1},
  { 19, kT1},
  { 35, kT1},
  { 67, kT1},
  {  3, kT2},
  {  5, kT1},
  {  9, kT1},
  { 17, kT1},
  { 33, kT1},
  { 65, kT1},
  {  1, kT2},
  {  2, kT1},
  {  4, kT1},
  {  8, kT1},
  { 16, kT1},
  { 32, kT1},
  { 64, kT1},
  {  0, kT3},
};

const int nSteps = sizeof table / sizeof *table;

void setup() {
  Serial.begin(115200);
  Serial.print(nSteps);
  Serial.println(" table where\n");

  strip.begin();
}

int step;

void loop() {
  strip.clear();

  for (int ii = 0; ii < SIZE; ii++) {
    if (table[step][0] & (1 << ii))
      strip.setPixelColor(ii, 0xff0000);
    else
      strip.setPixelColor(ii, 0x303030);
  }

  strip.show();
  delay(table[step][1]);

  step++; if (step >= nSteps) step = 0;
}