I purchased (hasn't arrived) a 16 x 16 matrix from Emartee Forum - Powered by Discuz! and I want to have it display an array which will later be programmed, but right now is static. However, I am not sure if the following code will work. Can someone proof read it.
Thanks
int myArray[16*16] = {1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,
1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,
1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,
1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,
1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,
1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,
1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,
1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,
1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,
1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,
1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,
1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,
1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,
1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,
1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,
1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0}; //16x16 array;
int A_port = 4;
int B_port = 5;
int C_port = 6;
int D_port = 7;
int OOE=2;
int RCK=10;
int SCKPin=9; //SCK is already defined as 13.
int SER=8;
int VCC=11;
int GND=3;
void setup() {
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
Serial.begin(9600);
digitalWrite(OOE,HIGH);
digitalWrite(VCC,HIGH);
digitalWrite(GND,LOW);
digitalWrite(SCKPin,LOW);
}
void loop() {
for(int disrow=0;disrow<16;disrow++) //scanning the row
{
digitalWrite(OOE,HIGH);
digitalWrite(RCK,LOW);
//loadoneline(); //load the data of a row
//sendoneline(); //send the data of a row
//sendPin(disrow);
//SelectRow
lightArray(disrow);
digitalWrite(OOE,LOW); // enable the row scanning
digitalWrite(RCK,HIGH); //light a row
delay(1);
}
}
void lightArray(int row)
{
//Light the row
Serial.print("Row: ");
Serial.print(row);
Serial.print(" ");
switch (row){
case 0:
digitalWrite(A_port , 0); digitalWrite(B_port , 0); digitalWrite(C_port, 0); digitalWrite(D_port , 0);
break;
case 1:
digitalWrite(A_port , 1); digitalWrite(B_port , 0); digitalWrite(C_port, 0); digitalWrite(D_port , 0);
break;
case 2:
digitalWrite(A_port , 0); digitalWrite(B_port , 1); digitalWrite(C_port, 0); digitalWrite(D_port , 0);
break;
case 3:
digitalWrite(A_port , 1); digitalWrite(B_port , 1); digitalWrite(C_port, 0); digitalWrite(D_port , 0);
break;
case 4:
digitalWrite(A_port , 0); digitalWrite(B_port , 0); digitalWrite(C_port, 1); digitalWrite(D_port , 0);
break;
case 5:
digitalWrite(A_port , 1); digitalWrite(B_port , 0); digitalWrite(C_port, 1); digitalWrite(D_port , 0);
break;
case 6:
digitalWrite(A_port , 0); digitalWrite(B_port , 1); digitalWrite(C_port, 1); digitalWrite(D_port , 0);
break;
case 7:
digitalWrite(A_port , 1); digitalWrite(B_port , 1); digitalWrite(C_port, 1); digitalWrite(D_port , 0);
break;
case 8:
digitalWrite(A_port , 0); digitalWrite(B_port , 0); digitalWrite(C_port, 0); digitalWrite(D_port , 1);
break;
case 9:
digitalWrite(A_port , 1); digitalWrite(B_port , 0); digitalWrite(C_port, 0); digitalWrite(D_port , 1);
break;
case 10:
digitalWrite(A_port , 0); digitalWrite(B_port , 1); digitalWrite(C_port, 0); digitalWrite(D_port , 1);
break;
case 11:
digitalWrite(A_port , 1); digitalWrite(B_port , 1); digitalWrite(C_port, 0); digitalWrite(D_port , 1);
break;
case 12:
digitalWrite(A_port , 0); digitalWrite(B_port , 0); digitalWrite(C_port, 1); digitalWrite(D_port , 1);
break;
case 13:
digitalWrite(A_port , 1); digitalWrite(B_port , 0); digitalWrite(C_port, 1); digitalWrite(D_port , 1);
break;
case 14:
digitalWrite(A_port , 0); digitalWrite(B_port , 1); digitalWrite(C_port, 1); digitalWrite(D_port , 1);
break;
case 15:
digitalWrite(A_port , 1); digitalWrite(B_port , 1); digitalWrite(C_port, 1); digitalWrite(D_port , 1);
break;
}
//Light the columns
for(int i = 0; i<numShifters;i++)
{
digitalWrite(RCLK_Pin,LOW);
for (int n=0;n<8*numShifters;n++)
{
digitalWrite(SRCLK_Pin,LOW);
if(myArray[row*n] == 1)
{
digitalWrite(SER_Pin,LOW);
Serial.print("H ");
}
else
{
digitalWrite(SER,HIGH);
Serial.print("L ");
}
//j=j>>1; //bitshift
digitalWrite(SRCLK_Pin,HIGH);
//delay(1);
}
digitalWrite(RCLK_Pin,HIGH);
}
Serial.println();
}