이 튜토리얼 에서는 스크롤링 알파벳을 보여주는 Arduino Uno를 사용하여 8x8 LED 매트릭스 스크롤링 디스플레이 를 디자인 할 것입니다.
8x8 LED 매트릭스에는 매트릭스 형태로 배열 된 64 개의 LED (발광 다이오드)가 포함되어 있으므로 이름이 LED 매트릭스입니다. 64 개의 LED를 perfboard 또는 DOT PCB에 납땜하여 매트릭스를 만들 것입니다. LED는 모든 색상이 될 수 있으며 사용 가능한 LED를 선택하십시오. 그런 다음이 64 개 LED 매트릭스를 제어하는 Arduino 용 프로그램을 작성합니다. 프로그램에 따르면 UNO는 스크롤 방식으로 문자를 표시하기 위해 적절한 LED에 전원을 공급합니다.
필요한 구성 요소:
- Arduino Uno
- 64 개의 LED
- 다른 납땜 도구가있는 Perfboard
- 1KΩ 저항기 (8 개)
- 전원 공급 장치 (5v)
회로 및 작동 설명:
64 개의 LED가 매트릭스 형태로 배열되어 있습니다. 따라서 8 개의 열과 8 개의 행이 있습니다. 이러한 행과 열에 걸쳐 한 행의 모든 양의 터미널이 함께 모입니다. 각 행에는 해당 행의 8 개 LED 모두에 대해 하나의 공통 양극 단자 가 있습니다. 아래 그림과 같습니다.
따라서 8 행에 대해 8 개의 공통 양극 단자가 있습니다. 그림에서 볼 수 있듯이 첫 번째 행을 고려하면 D57에서 D64까지의 8 개 LED는 공통 양극 단자를 가지며 'POSITIVE0'으로 표시됩니다. 이제 매트릭스의 첫 번째 행에있는 하나 또는 모든 LED를 발광 시키려면 LED 매트릭스의 PIN0에 전원을 공급해야합니다. 마찬가지로 모든 ROW에서 LED (또는 모두)를 켜려면 해당 행의 해당 Common Positive Terminal Pin에 전원을 공급해야합니다.
이것은 아직 끝나지 않았으며 MATRIX ROWS를 양수 공급으로 남겨두면 아무것도 산출되지 않습니다. LED 네거티브를 접지해야 빛을 발할 수 있습니다. 따라서 8x8 LED 매트릭스에서는 첫 번째 열의 모든 음극 단자가 PIN-A1 (NEGATIVE7)에 함께 연결되는 것처럼 모든 열에있는 LED의 모든 음극 단자가 함께 모여 8 개의 공통 음극 단자 를 형성 합니다. 이것은 아래 그림에 나와 있습니다.
Perfboard의 LED를 납땜하는 동안 이러한 핀에주의를 기울여야합니다.
이제 첫 번째 열의 LED를 접지해야하는 경우 MATRIX의 PIN-A1 (NEGATIVE7)을 접지하고 첫 번째 열의 모든 LED를 접지합니다. 다른 7 개의 일반 음수 열에 대해서도 동일한 프로세스가 적용됩니다.
이제부터 당신은 Common Positive와 Common Negative가 어떻게 작동하는지 알게되었습니다. 그것들이 어떻게 함께 작동하는지 살펴 보도록하겠습니다. 스크롤링 8x8 LED 매트릭스 디스플레이 의 최종 회로 는 다음과 같습니다.
멀티플렉싱을 사용하여 8x8 LED 매트릭스 구동:
이제 LED57을 켜고 UNO의 PIN0에 전원을 공급하고 UNO의 PIN-8을 접지해야한다고 가정 해 보겠습니다. 이제 LED57과 LED50을 모두 켜려면 PIN0, PIN1에 전원을 공급하고 PIN8, PIN9를 접지해야합니다. 그러나 이렇게하면 D57, D50뿐만 아니라 D49, D58도 켜집니다. 이를 피하기 위해 Multiplexing 이라는 기술을 사용합니다. 우리는 이미 8x8 LED 매트릭스에서이 멀티 플렉스 기술에 대해 자세히 논의했습니다. 자세한 설명은 해당 기사를 참조하십시오. 여기에서는 멀티플렉싱에 대해 간략하게 설명합니다.
인간의 눈은 30HZ 이상의 주파수를 포착 할 수 없습니다. 즉, LED가 30HZ 이상의 속도로 계속 켜졌다 꺼지는 것입니다. 눈은 LED가 계속 켜져있는 것으로 봅니다. 그러나 이것은 사실이 아니며 LED는 실제로 지속적으로 켜지고 꺼질 것입니다. 이 기술을 멀티플렉싱 이라고 합니다.
예를 들어 D49와 D58을 켜지 않고 LED57과 LED50 만 켜고 싶다고 가정 해 보겠습니다. 트릭은 먼저 첫 번째 행에 전원을 공급하여 LED57을 켜고 1mSEC를 기다린 다음 전원을 끕니다. 그런 다음 두 번째 행에 전원을 공급하여 LED50을 켜고 1mSEC를 기다린 다음 끕니다. 주기는 고주파수로 계속 진행되고 LED57 및 LED50은 빠르게 켜지고 꺼지며 두 LED가 모두 눈에 계속 켜져있는 것처럼 보입니다. 즉, 한 번에 한 행에만 전원을 공급하여 다른 행의 다른 LED를 켤 가능성을 제거합니다. 이 기술을 사용하여 모든 캐릭터를 표시합니다.
LED 매트릭스에 인쇄 할 문자 나 숫자 만 입력하면되는 복잡한 멀티플렉싱을 처리하기 위해 LedControlMS.h 라는 라이브러리도 있습니다. 자세한 내용은이 Arduino LED 매트릭스를 MAX7219 프로젝트로 확인하세요.
프로그래밍 설명:
코드에서 각 문자에 대해 십진수 값을 작성 하고이 값을 Arduino에 프로그래밍했습니다. 이 프로그램은 0.2 초마다이 값을 다음 행으로 이동하도록 작성했습니다. 이것은 문자를 위로 스크롤하는 것으로 보이며 매우 간단합니다.
표시 할 문자를 변경하려면 아래 주어진 문자 값에 따라 char ALPHA 배열 의 값을 바꾸 십시오.
24,60,102,126,102,102,102,0,0,0, // A 124,102,102,124,102,102,124,0,0,0, // B 60,102,96,96,96,102,60,0, 0,0, // C 120,108,102,102,102,108,120,0, 0,0, // D 126,96,96,120,96,96,126,0, 0,0, // E 126,96,96,120,96,96,96,0, 0,0, // F 60,102,96,110,102,102,60, 0, 0,0, // G 102,102,102,126,102,102,102,0, 0,0, // H 60,24,24,24,24,24,60,0, 0,0, // I 30,12,12,12, 12,108,56,0, 0,0, // J 102,108,120,112,120,108,102,0, 0,0, // K 96,96,96,96,96,96,126,0, 0,0, // L 99,119,127,107,99, 99,99,0, 0,0, // M 102,118,126,126,110,102,102,0, 0,0, // N 60,102,102,102,102,102,60,0, 0,0, // O 124,102,102,124,96,96,96,0, 0,0, // P 60,102,102,102,102,60,14,0, 0,0, // Q 124,102,102,124,120,108,102,0, 0,0, // R 60,102,96,60,6,102,60,0, 0,0, // S 126, 24,24,24,24,24,24,0, 0,0, // T 102,102,102,102,102,102,60,0, 0,0, // U 102,102,102,102,102,60,24,0, 0,0, // V 99,99,99,107,127,119,99,0, 0,0, // W 102,102,60,24,60,102,102,0, 0,0, // X 102,102,102,60,24,24,24,0, 0,0, // Y 126,6,12, 24,48,96,126,0, 0,0, // Z
LED 매트릭스에 DAD 를 표시하려면 먼저 위 목록에서 문자 D, A 및 D에 대한 값을 입력하여 char ALPHA 배열 의 문자 값을 대체 하십시오.
문자 ALPHA = {0,0,0,0,0,0,0,0,0,0,0, 120,108,102,102,102,108,120,0,0,0, 24,60,102,126,102,102,102,0,0,0, 120,108,102,102,102,108,120,0,0, 0, 0,0,0,0,0,0,0,0,0,0,0};
이제 총 값은 5 * 10 = 50 값이므로
바꾸기, for (int x = 0; x <142; x ++) // 150-8 (오버플로 중지) {…….. With, for (int x = 0; x <42; x ++) // 50-8 (오버플로 중지) {……..
따라서 번호 만 변경하면됩니다.
이것으로 프로그래밍을 마쳤으며 이제 8x8 LED 매트릭스의 텍스트를 스크롤 할 수 있습니다. 데모 비디오로 아래 의 전체 코드를 확인하십시오.