Why.

So, thanks to mem on the arduino forum, I managed to figure out the damage to the code:

Now it works!

Fixed! from Andrew Parnell on Vimeo.

What was wrong?
Short version: I was being really wasteful.

Long version: the way the code was written, each LED took a whole byte to assign. With the fixed code, each row takes a byte. (Taking it from 64 bytes per pattern, to 8. Serious savings!)

Code in the comments.

One thought on “Why.

  1. const int numPatterns = 64;

    int anPins[8] = {18,17,16,15,14,2,3,4};
    int cathPins[8] = {5, 6, 7, 8, 9, 10, 11, 12};

    byte patterns[numPatterns][8] = {{ \
    B00000001, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B00000010, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B00000100, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B00001000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B00010000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B00100000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B01000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B10000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B00000000, \
    B00000001, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B00000000, \
    B00000010, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B00000000, \
    B00000100, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B00000000, \
    B00001000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B00000000, \
    B00010000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B00000000, \
    B00100000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B00000000, \
    B01000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B00000000, \
    B10000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B00000000, \
    B00000000, \
    B00000001, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B00000000, \
    B00000000, \
    B00000010, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B00000000, \
    B00000000, \
    B00000100, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B00000000, \
    B00000000, \
    B00001000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B00000000, \
    B00000000, \
    B00010000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B00000000, \
    B00000000, \
    B00100000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B00000000, \
    B00000000, \
    B01000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B00000000, \
    B00000000, \
    B10000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000001, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000010, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000100, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00001000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00010000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00100000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B01000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B10000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000 \
    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000001, \
    B00000000, \
    B00000000, \
    B00000000, \

    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000010, \
    B00000000, \
    B00000000, \
    B00000000, \

    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000100, \
    B00000000, \
    B00000000, \
    B00000000, \

    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00001000, \
    B00000000, \
    B00000000, \
    B00000000, \

    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00010000, \
    B00000000, \
    B00000000, \
    B00000000, \

    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00100000, \
    B00000000, \
    B00000000, \
    B00000000, \

    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B01000000, \
    B00000000, \
    B00000000, \
    B00000000, \

    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B10000000, \
    B00000000, \
    B00000000, \
    B00000000, \

    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000001, \
    B00000000, \
    B00000000, \

    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000010, \
    B00000000, \
    B00000000, \

    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000100, \
    B00000000, \
    B00000000, \

    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00001000, \
    B00000000, \
    B00000000, \

    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00010000, \
    B00000000, \
    B00000000, \

    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00100000, \
    B00000000, \
    B00000000, \

    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B01000000, \
    B00000000, \
    B00000000, \

    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B10000000, \
    B00000000, \
    B00000000, \

    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000001, \
    B00000000, \

    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000010, \
    B00000000, \

    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000100, \
    B00000000, \

    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00001000, \
    B00000000, \

    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00010000, \
    B00000000, \

    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00100000, \
    B00000000, \

    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B01000000, \
    B00000000, \

    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B10000000, \
    B00000000, \

    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000001, \

    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000010, \

    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000100, \

    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00001000, \

    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00010000, \

    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00100000, \

    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B01000000, \

    },{ \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B00000000, \
    B10000000
    }};

    void setup() {

    for (int i = 0; i < 8; i++) {
    pinMode(anPins[i], OUTPUT);
    pinMode(cathPins[i], OUTPUT);
    }
    for (int i = 0; i < 8; i++) {
    digitalWrite(anPins[i], LOW);
    digitalWrite(cathPins[i], HIGH);
    }
    }

    void loop() {
    for(int i = 0; i < numPatterns; i++) {
    pattern(patterns[i], 500);
    }
    }

    void pattern(byte pat[8],unsigned long inc)
    {
    unsigned long T = millis() + inc;
    while(millis() < T) {
    for (int i = 0; i < 8; i++) {
    digitalWrite(cathPins[i], LOW);
    digitalWrite(anPins[0], pat[i] & B00000001);
    digitalWrite(anPins[1], pat[i] & B00000010);
    digitalWrite(anPins[2], pat[i] & B00000100);
    digitalWrite(anPins[3], pat[i] & B00001000);
    digitalWrite(anPins[4], pat[i] & B00010000);
    digitalWrite(anPins[5], pat[i] & B00100000);
    digitalWrite(anPins[6], pat[i] & B01000000);
    digitalWrite(anPins[7], pat[i] & B10000000);

    digitalWrite(cathPins[i], HIGH);
    blank();
    }
    }
    }

    void blank() {
    for (int i = 0; i < 8; i++) {
    digitalWrite(anPins[i], LOW);
    }
    }

Leave a Reply

Your email address will not be published. Required fields are marked *