// 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;
}