집에 굴러다니는 부품들을 정리하다 보니 오래전 아두이노 공부를 할 때 구입했던 8×8 LED 소자가 눈에 띄었다.
모델명은 1088BS인데, 8개의 적색 LED가 8줄로 구성된 LED 소자이다.
이 소자는 다음과 같은 크기를 가지는데, 각종 디스플레이나 발광소자로 사용되곤 한다.
이 소자의 뒷면에는 총 16개의 핀 이 있는데, 자세히 살펴보면 케이스의 옆면에 모델번호가 표기된 부분에 작은 돌기가 있는 것을 볼 수가 있다. 이 돌기가 방향을 나타내는 기준이 된다.
이 부분이 아래쪽으로 가도록 다음 사진과 같이 배치하면 아랫부분의 오른쪽 핀부터 시계방향으로 돌면서 1부터 16번까지 핀의 번호가 정해진다.
이 소자를 정면에서 보면 다음과 같은 모습인데,
다음과 같이 행과 열 번호를 이용하여, 각각의 LED를 구분한다.
그런데, 실제로 사용하다 보면 방향이 매우 혼돈스럽다. 위아래 방향을 구분하는 방법은 위에서 언급한 대로, 케이스 옆면의 돌기 부분을 아래로 배열하면 왼쪽 제일 상단이 1행 1열이 되고, 오른쪽 제일 아래가 8행 8열이 된다.
실제 각각의 LED와 연결된 핀의 배선은 다음과 같다.
작동원리는 각행에 High 신호를 넣어주면 해당해(Row)에 있는 8개의 LED가 모두 켜질 수 있는 준비가 되며, 각각의 LED는 반대편 단자의 신호가 Low 이면 해당 LED가 켜지고, High 이면 켜지지 않게 된다. (물론 각 행으로 가해지는 신호가 Low인 경우에도 물론 켜지지 않는다.) 즉, 9번 핀으로 High 신호가 가해지는 상태에서, 이에 연결된 LED 8개의 반대편 단자가 Low로 연결되면 LED가 켜지게 된다.
이 같은 원리를 이용하여, LED matrix를 수직으로, 그리고 그 다음 수평 방향으로 한줄씩 켜지도록 동작하는 Code를 만들어 보았다.
Coding 각각의 LED와 연결된 핀들을 다음과 같이 각각 개별적인 변수를 이용하여 선언해 주는 것도 가능하기는 하지만, 그렇게 하면 너무 Code가 길어지고, 제어가 어려워지므로, 예제 code에서는 GP1~GP16 핀들을 행과 열로 나누어 배열로 만들어, 출력 선언을 했다. 이렇게 하면 순환문 구조에서 제어가 용이해지고 Code도 간결해지게 된다..
import machine
import utime
pinV=[machine.Pin(9, machine.Pin.OUT, value=0),machine.Pin(14, machine.Pin.OUT, value=0),machine.Pin(8, machine.Pin.OUT, value=0),machine.Pin(12, machine.Pin.OUT, value=0),machine.Pin(1, machine.Pin.OUT, value=0),machine.Pin(7, machine.Pin.OUT, value=0),machine.Pin(2, machine.Pin.OUT, value=0),machine.Pin(5, machine.Pin.OUT, value=0)]
pinH=[machine.Pin(13, machine.Pin.OUT, value=0),machine.Pin(3, machine.Pin.OUT, value=0),machine.Pin(4, machine.Pin.OUT, value=0),machine.Pin(10, machine.Pin.OUT, value=0),machine.Pin(6, machine.Pin.OUT, value=0),machine.Pin(11, machine.Pin.OUT, value=0),machine.Pin(15, machine.Pin.OUT, value=0),machine.Pin(16, machine.Pin.OUT, value=0)]
while True:
for lines in range(len(pinV)):
pinV[lines].value(1)
utime.sleep(2)
pinV[lines].value(0)
for k in range(len(pinV)):
pinH[k].value(1)
pinV[k].value(1)
for cols in range(len(pinH)):
pinH[cols].value(0)
utime.sleep(2)
pinH[cols].value(1)
이 Code의 작동 모습은 다음과 같다.
참고사항
8×8 LED Matrix 소자는 총 16개의 선을 아두이노나 피코 보드 같은 마이크로컨트롤러로 연결해야 하기에 배선이 복잡해지고 좀 거추장스럽게 되는 단점이 있다.
참고로, 배선을 간단하게 만들기 위해, 다음과 같이 SPI 통신을 이용하는 모듈이나,
여러 개의 LED 매트릭스 소자를 연결하여 보다 많은 글자 등을 표시할 수 있게 한 다음 형태의 모듈도 출시되어 있다.

