// https://wokwi.com/projects/391185057960646657
# include <Adafruit_NeoPixel.h>
# define PIN 7
# define SIZE 9
Adafruit_NeoPixel strip = Adafruit_NeoPixel(SIZE, PIN, NEO_GRB + NEO_KHZ800);
void myDelay(unsigned long x)
{
// Serial.print(" delay "); Serial.println(x);
delay(x);
}
# define delay myDelay
# define digitalWrite myDigitalWrite
void myDigitalWrite(int theLED, int theValue)
{
strip.setPixelColor(theLED - 2, theValue ? 0xff0000 : 0x202020);
strip.show();
bool any = false;
for (int ii = 0; ii < 9; ii++)
any |= strip.getPixelColor(ii) == 0xff0000;
if (any) {
for (int ii = 0; ii < 9; ii++)
Serial.print(strip.getPixelColor(ii) == 0xff0000 ? "X" : ".");
Serial.println("");
}
}
# define t 20
# define t1 50
# define t2 100
void setup() {
Serial.begin(115200);
Serial.println("for loop version N\n");
strip.begin();
// set up pins 2 to 11 as outputs
// for (int i = 2; i <= 11; i++) {
// pinMode(i, OUTPUT);
// }
}
void loopX() {
drfPhaseLoop();
}
void drfPhaseLoop(void) {
const byte pins[] = {11,10,9,8,7,6,5,4,3,2};
const byte numPins = sizeof(pins) / sizeof(pins[0]);
const byte onWidth = 5;
for (int phase = 0; phase < numPins + onWidth; ++phase) {
int offPhase = phase - onWidth;
if (phase < numPins) {
Serial.print(char('A'+phase));
digitalWrite(pins[phase], HIGH);
}
if (offPhase >= 0 && offPhase < numPins) {
Serial.print(char('a'+offPhase));
digitalWrite(pins[offPhase], LOW);
}
delay(300);
}
}
# define t 200
# define t1 500
# define t2 2000
int mask;
void loop() {
fileInLeft();
for (; ; );
}
void writeIt(int x) {
int mask = 1;
strip.clear();
for (int ii = 0; ii < SIZE; ii++, mask <<= 1)
strip.setPixelColor(ii, x & mask ? 0xff0000 : 0x0040c0);
strip.show();
}
// fill from the left onto blank row
void fileInLeft() {
int mask = 0;
int display = 0;
mask = 0;
for (int ix = 0; ix < SIZE; ix++) {
mask = 1;
for (int ii = 0; ii < ix; ii++, mask <<= 1)
display |= mask;
mask = (1 << SIZE);
for (int ii = 0; ii < SIZE - ix; ii++) {
display &= ~mask;
mask >>= 1;
display |= mask;
writeIt(display);
delay(177);
}
delay(777);
}
}
/******** EFFECT 1 ********
void effect_1_fill_in_out() {
for(int pinX = 2; pinX <= 11; pinX++) {
for(int pin = 11; pin > pinX; pin--) {
digitalWrite(pin, HIGH);
delay(t);
digitalWrite(pin, LOW);
}
digitalWrite(pinX, HIGH);
}
delay(t2);
// ************ BUILT OUT ************
for(int pinX = 2; pinX <= 11; pinX++) {
digitalWrite(pinX, LOW);
for(int pin = pinX; pin >= 2; pin--) {
digitalWrite(pin, HIGH);
delay(t);
digitalWrite(pin, LOW);
}
}
delay(t2);
}
*/