8x8 RGB LED matrix, someone help

Hello guys.
I’ve build my 8x8 RGB LED matrix and i want to display letters without shift registers (i have only 8 BC547B transistors in my circuit) with Arduino Mega 2560 (using 32 pins, 24 for anodes of the LEDs and 8 for the transistors), is there any way i could write a short program, like if i would use a 74HC595 shift register?
I need to multiplex LEDs to make a letter, i also want letters to move from right to the left. I’m really confused and i’m not that familiar with Arduino commands.

It would be great if someone could give me an example or explain it to me.

TEST_za_crke.ino (2 KB)

This is how the matrix looks like

c819c2d8832d2158dd840cbe9af529689afebd82.png

/**********
Here are integers only for 1 color. Column are bases of BC557-s and rows are anodes of the LEDs. 
***********/
 

int Vrsta1 = 22;     //"Vrsta" means row
int Vrsta2 = 24;
int Vrsta3 = 26;
int Vrsta4 = 28;
int Vrsta5 = 30;
int Vrsta6 = 32;
int Vrsta7 = 34;
int Vrsta8 = 36;

int wait = 0.5;
int wait0 = 100;
int wait1 = 300;
int wait2 = 5000;
int wait3 = 1000;
int wait4 = 200;
int wait5 = 50;
int wait6 = 25;
int wait7 = 10;
int wait8 = 5;
int wait9 = 1;

int Stolpec1 = 38;     //"Stoplec" means column
int Stolpec2 = 40;
int Stolpec3 = 42;
int Stolpec4 = 44;
int Stolpec5 = 46;
int Stolpec6 = 48;
int Stolpec7 = 50;
int Stolpec8 = 52;

void setup() {
pinMode(Vrsta1, OUTPUT);
pinMode(Vrsta2, OUTPUT);
pinMode(Vrsta3, OUTPUT);
pinMode(Vrsta4, OUTPUT);
pinMode(Vrsta5, OUTPUT);
pinMode(Vrsta6, OUTPUT);
pinMode(Vrsta7, OUTPUT);
pinMode(Vrsta8, OUTPUT);

pinMode(Stolpec1, OUTPUT);
pinMode(Stolpec2, OUTPUT);
pinMode(Stolpec3, OUTPUT);
pinMode(Stolpec4, OUTPUT);
pinMode(Stolpec5, OUTPUT);
pinMode(Stolpec6, OUTPUT);      
pinMode(Stolpec7, OUTPUT);    
pinMode(Stolpec8, OUTPUT); 

}

void loop() {
  
int l = 0;
for (l=0; l<=50; l=l+1) {
  digitalWrite(Vrsta2, HIGH);
  digitalWrite(Vrsta3, HIGH);
  digitalWrite(Vrsta4, HIGH);
  digitalWrite(Vrsta5, HIGH);
  digitalWrite(Vrsta6, HIGH);
  digitalWrite(Vrsta7, HIGH);
  digitalWrite(Vrsta8, HIGH);
  
  digitalWrite(Stolpec1, LOW);
  digitalWrite(Stolpec2, HIGH);     //navpična črta črke R
  digitalWrite(Stolpec3, LOW); 
  digitalWrite(Stolpec4, LOW);
  digitalWrite(Stolpec5, LOW);
  digitalWrite(Stolpec6, LOW);
  digitalWrite(Stolpec7, LOW);
  digitalWrite(Stolpec8, LOW); 
  delay(wait9);
    }
  delay(wait3);
}
 //The code above represents the vertical line of the letter "R".
 /*  
 Like this:     0,0,0,0,0,0,0,0,0
                0,*,0,0,0,0,0,0,0
                0,*,0,0,0,0,0,0,0
                0,*,0,0,0,0,0,0,0
                0,*,0,0,0,0,0,0,0
                0,*,0,0,0,0,0,0,0
                0,*,0,0,0,0,0,0,0
                0,*,0,0,0,0,0,0,0
  */






}

Whoops, i mean, anodes are in columns and cathodes are in rows, my bad.

I'm using only the BC547B transistors, i wonder if i can shorten my code to display letters, and i want them to keep moving from right to the left. I'm already multiplexing every single letter, but i don't know how to write a code to get them moving. If i keep changing the pins for every single letter, the code will be VERY long and it will take a huge amount of time to write it.

Have you found a sketch which does what you want but uses 74hc595?

This sketch drives an 8x8 matrix but using a decade counter ic to multiplex the columns. It may be easier to change this sketch to work without the decade counter chip.

Paul