Hi all! I was trying to get a 5x7 dot matrix to work. I started with this:
int columns[]={13, 12, 11, 10, 9};
int rows[]={8, 7, 6, 5, 4, 3, 2};
void setup(){
for(int i=0; i<=4; i++){
pinMode(columns[i], OUTPUT);
}
for(int i=0; i<=6; i++){
pinMode(rows[i], OUTPUT);
}
}
void loop(){
dot(2, 1);
}
void dot(int col, int row){
for(int i=0; i<4; i++){
digitalWrite(rows[i], LOW);
}
for(int i=0; i<6; i++){
digitalWrite(columns[i], HIGH);
}
digitalWrite(rows[row], LOW);
digitalWrite(columns[col], HIGH);
}
and what I get is a whole row lighting up. Why is this?
void dot(int col, int row)
{
for(int i=0; i<4; i++)
{
digitalWrite(rows[i], LOW);
}
for(int i=0; i<6; i++)
{
digitalWrite(columns[i], HIGH);
}
digitalWrite(rows[row], LOW);
digitalWrite(columns[col], HIGH);
}
It looks to me as though your rows and columns are mixed up in this function. Also for(int i=0; i<6; i++)
loops 6 times and for(int i=0; i<4; i++)
loops 4 times but you say that your matrix is 5x7
How are the LEDs wired ?
system
February 11, 2013, 1:16pm
3
Delete all the hardcoded literal values for the number of rows and columns, and replace them with defined constants. For example:
const byte COLUMN_COUNT = 5;
const byte ROW_COUNT = 7;
When looping through rows and columns always use these values, like this:
for(int r = 0; r < ROW_COUNT; r++)
{
digitalWrite(rows[r], LOW);
}
for(int c = 0; c < COLUMN_COUNT; c++)
{
digitalWrite(columns[c], HIGH);
}
Thanks a lot. I modified the code, here it is.
int columns[]={13, 12, 11, 10, 9};
int rows[]={8, 7, 6, 5, 4, 3, 2};
const byte COLUMN_COUNT=5;
const byte ROW_COUNT=7;
void setup(){
for(int i=0; i<=4; i++){
pinMode(columns[i], OUTPUT);
}
for(int i=0; i<=6; i++){
pinMode(rows[i], OUTPUT);
}
}
void loop(){
dot(2, 1);
}
void dot(int col, int row){
for(int i=0; i<=4; i++){
digitalWrite(rows[i], HIGH);
}
for(int i=0; i<=6; i++){
digitalWrite(columns[i], LOW);
}
digitalWrite(rows[row], LOW);
digitalWrite(columns[col], HIGH);
}
My dot matrix is a generic 12 pin 5x7, I don't have a schematic. After modifing the code, the first, second, sixth and seventh rows of the first column light up.
system
February 11, 2013, 2:24pm
5
arduinohabib:
Thanks a lot. I modified the code, here it is.
You have added the constant definitions but you have completely ignored all the other suggestions I made.
Why use ints to count from 0 to less than 10?
Was that a conscious choice or just following a grooved-in habit to save actual thinking?