使用74HC595连到8*8LED矩阵的L上,arduino的5-12口连到8*8LED矩阵的C上
但是之后出现了问题,大概如下:
比如想要电亮第三行第二排,成功之后,
之后再想点亮第四行第五个,上传之后第四行第二排和第五排都亮了不知道是什么原因。
比如我想点亮心形图案,就变成这样了:

连接可能不太清晰,大致如下:

代码:
int big = 2;
int push =3;
int datain = 4;
int lineSignal[8] = {0,0,0,0,0,0,0,0};//8*8矩阵LED的行信号
int col[8]{5,6,7,8,9,10,11,12};//8*8矩阵LED的列数字端口
int matrix[8][8]={//代表8*8LED的输入矩阵
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,1,0,0,1,0,0,
0,1,1,1,1,1,1,0,
0,1,1,1,1,1,1,0,
0,0,1,1,1,1,0,0,
0,0,0,1,1,0,0,0,
0,0,0,0,0,0,0,0,
};
void setup() {
// put your setup code here, to run once:
pinMode(big, OUTPUT);
pinMode(push, OUTPUT);
pinMode(datain, OUTPUT);
digitalWrite(big, LOW);
for(int i=0;i<8;i++){
pinMode(col[i],OUTPUT);
digitalWrite(col[i],HIGH) ;
pushDataIn(LOW);
}
digitalWrite(big,HIGH);
}
void loop() {
// put your main code here, to run repeatedly:
showMatrix(matrix);
delay(10000);
}
void pushDataIn(int i){
digitalWrite(push,LOW);
digitalWrite(datain , i);
digitalWrite(push,HIGH);
}
//根据矩阵电亮8*8LED矩阵
void showMatrix(int matrix[8][8]){
for(int i=0;i<8;i++){
for(int j =0;j<8;j++){
if(matrix[i][j] == 1){
digitalWrite(col[j],LOW);
lineSignal[i] = 1;
}
}
}
digitalWrite(big, LOW);
for(int i = 0 ;i <8 ; i++){
pushDataIn(lineSignal[i]);
}
digitalWrite(big,HIGH);
}
但是之后出现了问题,大概如下:
比如想要电亮第三行第二排,成功之后,
之后再想点亮第四行第五个,上传之后第四行第二排和第五排都亮了不知道是什么原因。
比如我想点亮心形图案,就变成这样了:

连接可能不太清晰,大致如下:

代码:
int big = 2;
int push =3;
int datain = 4;
int lineSignal[8] = {0,0,0,0,0,0,0,0};//8*8矩阵LED的行信号
int col[8]{5,6,7,8,9,10,11,12};//8*8矩阵LED的列数字端口
int matrix[8][8]={//代表8*8LED的输入矩阵
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,1,0,0,1,0,0,
0,1,1,1,1,1,1,0,
0,1,1,1,1,1,1,0,
0,0,1,1,1,1,0,0,
0,0,0,1,1,0,0,0,
0,0,0,0,0,0,0,0,
};
void setup() {
// put your setup code here, to run once:
pinMode(big, OUTPUT);
pinMode(push, OUTPUT);
pinMode(datain, OUTPUT);
digitalWrite(big, LOW);
for(int i=0;i<8;i++){
pinMode(col[i],OUTPUT);
digitalWrite(col[i],HIGH) ;
pushDataIn(LOW);
}
digitalWrite(big,HIGH);
}
void loop() {
// put your main code here, to run repeatedly:
showMatrix(matrix);
delay(10000);
}
void pushDataIn(int i){
digitalWrite(push,LOW);
digitalWrite(datain , i);
digitalWrite(push,HIGH);
}
//根据矩阵电亮8*8LED矩阵
void showMatrix(int matrix[8][8]){
for(int i=0;i<8;i++){
for(int j =0;j<8;j++){
if(matrix[i][j] == 1){
digitalWrite(col[j],LOW);
lineSignal[i] = 1;
}
}
}
digitalWrite(big, LOW);
for(int i = 0 ;i <8 ; i++){
pushDataIn(lineSignal[i]);
}
digitalWrite(big,HIGH);
}
