우리는 라즈베리 파이 튜토리얼 시리즈를 만들었습니다. 여기에서 LED, LCD, 버튼, DC 모터, 서보 모터, 스테퍼 모터, ADC, 시프트 레지스터 등과 같은 모든 기본 구성 요소와 라즈베리 파이의 인터페이스를 다룹니다. 초보자를위한 간단한 Raspberry Pi 프로젝트 와 좋은 IoT 프로젝트를 게시 했습니다. 오늘,이 튜토리얼의 계속에서 우리는 Raspberry Pi의 8x8 LED 매트릭스 모듈 을 제어 할 것 입니다. 행렬 모듈에 문자를 표시하는 파이썬 프로그램을 작성합니다.
또한 Arduino와 8x8 LED 매트릭스 인터페이스 및 AVR Microcontorller와 LED 매트릭스를 확인하십시오.
필요한 구성 요소:
여기 에서는 Raspbian Jessie OS와 함께 Raspberry Pi 2 Model B를 사용하고 있습니다. 모든 기본 하드웨어 및 소프트웨어 요구 사항은 이전에 논의되었으며, 시작하려면 Raspberry Pi 소개 및 Raspberry PI LED Blinking에서 찾아 볼 수 있습니다.
- 라즈베리 파이 보드
- 전원 공급 장치 (5v)
- 1000uF 커패시터 (전원 공급 장치에 연결됨)
- 1KΩ 저항기 (8 개)
8x8 LED 매트릭스 모듈:
8 * 8 LED 매트릭스 모듈에는 매트릭스 형태로 배열 된 64 개의 LED (발광 다이오드)가 포함되어 있으므로 이름이 LED 매트릭스입니다. 이 소형 모듈은 다양한 크기와 다양한 색상으로 제공됩니다. 편리하게 선택할 수 있습니다. 모듈의 PIN 구성은 그림과 같습니다. 모듈의 핀 배치가 순서가 아니므로 오류를 방지하기 위해 그림에 표시된대로 정확히 PIN 번호를 매겨 야합니다.
LED 매트릭스 모듈에는 8 + 8 = 16 공통 터미널이 있습니다. 그 위에 매트릭스 형태로 64 개의 LED를 연결하기 위해 8 개의 행과 8 개의 열 형태의 8 개의 공통 양극 단자와 8 개의 공통 음극 단자가 있습니다. 모듈을 회로도 형태로 그리면 아래와 같은 그림이 생깁니다.
따라서 8 개의 행에 대해 8 개의 공통 양극 터미널 (9, 14, 8, 12, 17, 2, 5)이 있습니다. 첫 번째 행을 고려하면 D1에서 D8까지의 LED에는 공통 양극 단자가 있으며 핀은 LED 매트릭스 모듈의 PIN9에서 나옵니다. ROW에있는 하나 또는 모든 LED를 켜려면 LED MODULE의 해당 핀에 + 3.3v로 전원을 공급해야합니다.
일반적인 양극 단자와 마찬가지로 8 개의 공통 음극 단자 가 열 (13, 3, 4, 10, 6, 11, 15, 16)로 있습니다. 모든 열의 LED를 접지하기 위해 접지 할 각각의 공통 음극 단자입니다.
회로 설명:
Raspberry Pi와 LED 매트릭스 모듈 간의 연결 은 아래 표에 나와 있습니다.
LED 매트릭스 모듈 핀 번호 |
함수 |
Raspberry Pi GPIO 핀 번호 |
13 |
긍정적 0 |
GPIO12 |
삼 |
긍정적 1 |
GPIO22 |
4 |
긍정적 2 |
GPIO27 |
10 |
긍정적 3 |
GPIO25 |
6 |
긍정적 4 |
GPIO17 |
11 |
긍정적 5 |
GPIO24 |
15 |
긍정적 6 |
GPIO23 |
16 |
긍정적 7 |
GPIO18 |
9 |
부정적 0 |
GPIO21 |
14 |
부정적 1 |
GPIO20 |
8 |
NEGATIVE2 |
GPIO26 |
12 |
부정적 3 |
GPIO16 |
1 |
네거티브 4 |
GPIO19 |
7 |
네거티브 5 |
GPIO13 |
2 |
부정적 6 |
GPIO6 |
5 |
네거티브 7 |
GPIO5 |
다음은 Raspberry Pi와 8x8 LED 매트릭스 를 인터페이스 하는 최종 회로도입니다.
작동 설명:
여기에서는 멀티플렉싱 기법 을 사용 하여 8x8 LED 매트릭스 모듈에 문자를 표시합니다. 따라서이 다중화에 대해 자세히 논의하겠습니다. 매트릭스에서 LED D10을 켜려면 모듈의 PIN14에 전원을 공급하고 모듈의 PIN3을 접지해야합니다. 이 LED를 사용하면 아래 그림과 같이 D10이 켜집니다. MATRIX가 모든 것이 정상인지 알기 위해서는 먼저이 사항을 확인해야합니다.
이제 D1을 켜려면 매트릭스의 PIN9에 전원을 공급하고 PIN13을 접지해야합니다. 그 LED로 D1이 빛납니다. 이 경우 현재 방향은 아래 그림과 같습니다.
이제 까다로운 부분에 대해 D1과 D10을 동시에 켜고 싶다고 생각합니다. 따라서 PIN9, PIN14에 전원을 공급하고 PIN13, PIN3을 접지해야합니다. 이렇게하면 LED D1 및 D10이 켜지지 만 이와 함께 LED D2 및 D9도 켜집니다. 공통 터미널을 공유하기 때문입니다. 따라서 대각선을 따라 LED를 켜려면 도중에 모든 LED를 켜야합니다. 이것은 아래 그림에 나와 있습니다.
이 문제를 피하기 위해 우리는 Multiplexing 이라는 기술을 사용합니다. 8x8 LED 매트릭스와 AVR을 연결하면서이 멀티플렉싱 기술에 대해서도 논의했습니다. 여기서 다시 설명하겠습니다. 이 동일한 멀티플렉싱 기술은 Arduino 및 AVR 마이크로 컨트롤러를 사용하는 8x8 LED 매트릭스의 스크롤링 텍스트에도 사용됩니다.
인간의 눈은 30HZ 이상의 주파수를 포착 할 수 없습니다. 즉, LED가 30HZ 이상의 속도로 계속 켜졌다 꺼지는 것입니다. 눈은 LED가 계속 켜져있는 것으로 봅니다. 그러나 이것은 사실이 아니며 LED는 실제로 지속적으로 켜지고 꺼질 것입니다. 이 기술을 멀티플렉싱 이라고 합니다.
예를 들어 D2와 D9를 켜지 않고 LED D1과 LED D10 만 켜고 싶다고 가정 해 보겠습니다. 트릭은 먼저 PIN 9 및 13을 사용하여 LED D1에만 전원을 공급하고 1mSEC를 기다린 다음 전원을 끕니다. 그런 다음 PIN 14 및 3을 사용하여 LED D10에 전원을 공급하고 1mSEC를 기다린 후 전원을 끕니다. 주기는 고주파수로 계속 진행되고 D1 및 D10은 빠르게 켜지고 꺼지며 두 LED가 우리 눈에 계속 켜져있는 것처럼 보입니다. 즉, 한 번에 한 행 (LED)에만 전원을 공급하므로 다른 행의 다른 LED를 켤 가능성이 없습니다. 이 기술을 사용하여 모든 캐릭터를 표시합니다.
아래 그림과 같이 행렬에 "A"를 표시하려는 경우와 같은 한 가지 예를 통해 더 자세히 이해할 수 있습니다.
말했듯이 순식간에 한 행을 켭니다.
이때 t = 0m SEC에서 PIN09는 HIGH로 설정 (현재 다른 ROW 핀은 LOW), PIN3, PIN4, PIN10, PIN6, PIN11, PIN15는 접지 (다른 COLUMN 핀은 현재 HIGH)
이때 t = 1m SEC에서 PIN14는 HIGH (다른 ROW 핀은 현재 LOW)로 설정되고, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16은 접지 (다른 COLUMN 핀은 이때 HIGH입니다.))
t = 2m SEC에서 PIN08은 HIGH로 설정 (현재 다른 ROW 핀은 LOW), 이때 PIN13, PIN3, PIN15, PIN16은 접지 (다른 COLUMN 핀은 현재 HIGH)
t = 3m SEC에서 PIN12는 HIGH로 설정 (현재 다른 ROW 핀은 LOW), 이때 PIN13, PIN3, PIN15, PIN16은 접지 (다른 COLUMN 핀은 현재 HIGH)
이때 t = 4m SEC에서 PIN01은 HIGH로 설정 (현재 다른 ROW 핀은 LOW), PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16은 접지 (다른 COLUMN 핀은이 시점에서 HIGH))
t = 5m SEC에서 PIN07은 HIGH로 설정되고 (현재 다른 ROW 핀은 LOW) 이때 PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16은 접지됩니다 (다른 COLUMN 핀은 이때 HIGH입니다.))
t = 6m SEC에서 PIN02는 HIGH로 설정 (현재 다른 ROW 핀은 LOW 임) 이때 PIN13, PIN3, PIN15, PIN16은 접지 (다른 COLUMN 핀은 현재 HIGH)
t = 7m SEC에서 PIN05는 HIGH로 설정 (현재 다른 ROW 핀은 LOW), 이때 PIN13, PIN3, PIN15, PIN16은 접지 (다른 COLUMN 핀은 현재 HIGH)
이 속도에서 디스플레이는 그림과 같이 계속해서 "A"문자를 표시합니다.
Raspberry Pi를 사용하여 LED 매트릭스에 문자를 표시 하는 Python 프로그램 은 다음과 같습니다. 프로그램은 댓글로 잘 설명됩니다. 각 문자에 대한 포트 값은 프로그램에서 제공됩니다. 주어진 프로그램의 'for 루프'에서 'pinp' 값을 변경하여 원하는 문자를 표시 할 수 있습니다. 아래의 데모 비디오도 확인하십시오.