LED matrix

Hello!
I am quite new in the physical computing world and I need your help.
I want to upgrade my 6x6 LED matrix to 6x6x6 cube that works as 2D display with "extruded" z direction (basically it's like a chess board, where each field (e.g. A2 or B5) is in parallel with 5 more diods that turn on and off as the first one controlled by an OpenGL-Arduino code.
The matrix is controlled by an OpenGL program, which proceeds images taken from the camera and notices changes for 6x6 fields. Since the extreme case could require turning on all the LEDs, I have to count on much stronger current...
So, I'm thinking of having established serial communication in between OpenGL code and microchip on the Arduino board. OpenGL code should send array of data to 12 pins (6 for rows A to F, 6 for coloumns 1-6). An OpenGl code proceeds image taken from the camera and for example if something happens on the field A5, the pins set to A and to 5 should be high...only in case if the two pins controling the exact row and exact column are set to high should turn the LED high (e.g. digital.Write(pinA, HIGH); digital.Write(pin5, HIGH); )
I'm thinking to use power transistor Darlingtons for this purpose. However, I set the codes in C and Arduino for test communication ( and printing for debugging), but there is probably something that I'm missing... I don't know how to send the data from computer to Arduino chip to clearly know what to do...this far I came on my own...
I would appreciate if you take a look at this codes and give some advice how to solve this...
Thank you very much,
Tatjana
...
//C code sends data from the computer
/* Standard input/output definitions /
#include <stdio.h>
/
String function definitions /
#include <string.h>
/
UNIX standard function definitions /
#include <unistd.h>
/
File control definitions /
#include <fcntl.h>
/
Error number definitions /
#include <errno.h>
/
POSIX terminal control definitions */
#include <termios.h>

#define BAUDRATE B9600
#define MODEMDEVICE "/dev/ttyUSB0"
#define _POSIX_SOURCE 1 /* POSIX compliant source */
#define FALSE 0
#define TRUE 1

int fd;
int n;

//FILE *input;
int output;
char readBuf[255]; //buffer for where data is put

int main(void)
{

//init serial stuff

struct termios oldtio, newtio;

/* open the device to be non-blocking (read will return immediatly) */
fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY);

if (fd <0) {
perror(MODEMDEVICE);
return(-1);
}

tcgetattr(fd,&oldtio); /* save current port settings /
/
set new port settings for canonical input processing */
newtio.c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD;
newtio.c_iflag = IGNPAR | ICRNL;
newtio.c_oflag = 0;
newtio.c_lflag = ICANON;
newtio.c_cc[VMIN]=1;
newtio.c_cc[VTIME]=0;
tcflush(fd, TCIFLUSH);
tcsetattr(fd,TCSANOW,&newtio);

//fd_set input;
fd_set output;
struct timeval timeout;
int res;
int paramValue;

FD_ZERO(&output);
FD_SET(fd, &output);
timeout.tv_sec = 0;
timeout.tv_usec = 0;

while(write(fd+1, &output,&timeout)) {
res = write(fd, readBuf, 1);
}

FD_ZERO(&output);

FD_SET(fd, &output);
timeout.tv_sec = 0;
timeout.tv_usec = 0;
}

....

// On Arduino

int ledPin = 13; //select the pin for LED

int val;

int serialGet = 0; //variable to store the value coming from the serial port

int delaytime = 1; //delaytime for the main loop

void setup() {

pinMode(ledPin, OUTPUT); //declared LED as output

beginSerial(9600);

}

void loop() {

// if (Serial.available() > 0)

serialGet = serialRead(); //read the serial port

if (serialGet != -1) { //if the input is -1, then there is no data

val = serialGet; //otherwise store it

}

if (val == 'H') {

digitalWrite(ledPin, HIGH);

Serial.print("I received: ");

Serial.println(val);

} else if(val == 'L') {

digitalWrite(ledPin, LOW);

Serial.print("I received: ");

Serial.println(val);

}

delay(delaytime);

}