当点亮 8x8 矩阵中的特定 LED 时,一整列不会关闭 Arduino Uno

时间:2021-01-12 12:22:00

标签: arduino arduino-uno

问题在于,当我尝试制作特定图像时,一列在没有我要求的情况下亮起。

我想要的图片是:

_•____•_
_••__••_
••_••_••
•••__•••
••••••••
_••__••_
__••••__

但我得到:

_•_•__•_
_•••_••_
••_••_••
••••_•••
••••••••
_•••_••_
__••••__

事实上,即使我用 0 或 1 填充列,它也不会关闭。

经过反复试验,我发现此列上的 LED 在两种情况下会亮起:

  1. LED 应该亮起来
  2. 同一行还有一个 LED 亮起。

我只是在学习这些东西。我是 3 天前拿到的,所以我主要是复制和粘贴别人的代码,然后稍微重新整理一下,以了解它是如何工作的。

这是负责这部分程序的代码部分:

// 2-dimensional array of row pin numbers:
int C[] = {2, 7, A5, 5, 13, A4, 12, A2};  
// 2-dimensional array of column pin numbers:
int R[] = {6, 11, 10, 3, A3, 4, 8, 9};    
unsigned char Mysia[8][8] = {
  0,1,0,0,0,0,1,0,
  0,1,1,0,0,1,1,0,
  0,1,1,1,1,1,1,0,
  1,1,0,1,1,0,1,1,
  1,1,1,0,0,1,1,1,
  1,1,1,1,1,1,1,1,
  0,1,1,0,0,1,1,0,
  0,0,1,1,1,1,0,0,
};

void Display(unsigned char dat[8][8]) {  
  for(int c=0; c<8; c++) {  
    digitalWrite(C[c],LOW);
    for(int r=0; r<8; r++) {  
      digitalWrite(R[r], dat[r][c]);  
    }  
    delay(1);  
    Clear();  //Remove empty display light
  }  
}  
  
void Clear() {  
  for(int i=0; i<8; i++) {  
    digitalWrite(R[i],LOW);  
    digitalWrite(C[i],HIGH);  
  }  
}

void case2() {
  Display(Mysia);
}

0 个答案:

没有答案