회로도가 급히 필요해 이전 포스팅에 뭉뚱그려 적은 내용을 다시 포스팅 한다. 삶은 언제나 밀려간다. 우리는 언제나 뒤꽁무니만 열심히 좆는다. 젠장~. 완벽할 필요는 없지만 처음에 잘해야 하고 시간을 들인다. 깔끔하고 보기 좋다.
이전 포스팅을 참고하고 아래는 상세히 기록한다. 아두이노 우노 코드와 연결도인데 잘 ESP32에서도 잘 돌아간다.
만든 이유는 라이브러리를 사용하면 편하긴 한데 Delay 함수를 쓸 수 없고(쓰지 않는게 맞지만 테스트 할 때 불편하다.) 숫자를 디스플레이하면 매번 loop에서 실행을 해야한다.
4자리 7세그먼트 LED 디스플레이 모듈을 직접 만들어보세요
4자리 7세그먼트 LED 디스플레이 모듈
다음은 여러 마이크로프로세서와 개발 보드로 구동할 수 있는 4자리 7세그먼트 발광 다이오드 디스플레이 모듈의 간단한 회로 아이디어입니다. 저는 제작한 이후로 Arduino 마이크로컨트롤러와 함께 사용해 왔습니다. 5V 전원 공급 장치 외에 이 모듈은 마이크로컨트롤러의 I/O 3개만 필요하고 전원 및 데이터 라인을 모듈에 연결하는 데 헤더가 하나만 필요합니다.
주요 구성 요소
- MC74HC595AD IC x2(또는 동급)
- FYQ-3641BH 4자리 7세그먼트 LED 디스플레이(또는 다른 공통 애노드 유형) x1
- 100nF 커패시터 x2
- 5핀 헤더 x1
데이터시트에 따르면 74HC595 IC는 8비트 시프트 레지스터와 3상태 병렬 출력이 있는 8비트 D형 래치로 구성됩니다. 이 IC는 오늘날의 마이크로컨트롤러에서 SPI 직렬 데이터 포트와 직접 인터페이스하고 직렬 데이터를 수신하며 직렬 출력을 제공합니다.
시프트 레지스터는 또한 8비트 래치에 병렬 데이터를 제공합니다. 시프트 레지스터와 래치에는 독립적인 클록 입력도 있습니다. IC의 작동 전압 범위는 2.0~6.0V입니다. 아래에 표시된 74HC595의 핀 할당 및 논리 다이어그램을 참조하세요.
4자리 7세그먼트 LED 디스플레이 모듈-74HC595 데이터
FYQ-3641BH는 중국산 4자리 7세그먼트 공통 애노드(빨간색) LED 디스플레이입니다. 핀 아웃 정보가 있는 12핀 LED 디스플레이의 내부 다이어그램은 다음과 같습니다.
4자리 7세그먼트 LED 디스플레이 모듈-3641BH LED 데이터
회로도
74HC595 IC는 표준 SPI 인터페이스를 사용하므로 외부 마이크로컨트롤러에서 세 개의 직렬 제어 신호(직렬 데이터 입력, 직렬 클록, 래치 클록)를 수신합니다. 또한 74HC595의 다른 관련 핀 설명을 참조하세요.
- 74HC595의 핀 14는 직렬 데이터 입력 핀입니다. 이 핀의 데이터는 8비트 직렬 시프트 레지스터로 이동합니다.
- 핀 11은 시프트 레지스터 클록 입력 핀입니다. 여기에서 낮음에서 높음으로 전환하면 직렬 입력 핀의 데이터가 8비트 시프트 레지스터로 이동합니다.
- 핀 12는 스토리지 래치 클록 입력 핀입니다. 여기에서 낮음에서 높음으로 전환하면 시프트 레지스터 데이터가 래치됩니다.
- 핀 15, 1, 2, 3, 4, 5, 6, 7(QA-QH)은 반전되지 않은 3상태 래치 출력 핀입니다.
- 핀 9는 반전되지 않은 직렬 데이터 출력 핀입니다. 이것은 8비트 시프트 레지스터의 8번째 단계 출력입니다(3상태 용량 없음)
4자리 7세그먼트 LED 디스플레이 모듈 회로도
74HC595로 16비트 시프트 레지스터를 만드는 것은 매우 간단합니다. 74HC595 데이지 체인만 있으면 됩니다. 회로도에서 두 개의 74HC595 IC가 공통 클록 및 래치 핀을 공유하지만 첫 번째 시프트 레지스터의 데이터 출력 핀은 두 번째 시프트 레지스터의 데이터 입력 핀에 연결되어 있는 것을 볼 수 있습니다.
원칙적으로 두 개의 데이지 체인 시프트 레지스터는 체인의 첫 번째 장치가 가장 중요한 바이트(MSB)이므로 마지막으로 채워지고 두 번째 장치가 가장 중요하지 않은 바이트(LSB)이므로 마이크로컨트롤러의 직렬 데이터 세트에 의해 가장 먼저 채워지는 단일 16비트 레지스터처럼 작동합니다.
빠른 테스트/데모 코드
이 코드를 사용하여 Arduino Uno의 도움으로 LED 모듈을 테스트합니다. 다음 표를 찾아서 계속하세요.
Arduino Uno | I/OLED Module Header (J1) | ESP32 |
5V | Pin 1 P16 | 3.3V |
D4 | Pin 2 P12 | RCLK 4 |
D7 | Pin 3 P11 | SCLK 0 |
D8 | Pin 4 P14 | DIO 16 |
GND | Pin 5 P8 | GND |
코드는 아래와 같다.
/*
* DIY 4-Digit 7-Segment LED Display Module
* Hardware: 74HC595x2 & 4-Digit 7-Segment LED Display (CA)x1
* Demo Code Prepared in Arduino IDE 1.6.9
* 74HC595 16-Bit Output Mode
* Arduino Hardware: Arduino Uno (R3)
* Author: T.K.Hareendran
* Website: https://www.Codrey.com
*/
int LATCHDIOPin = 4; // Pin12 74HC595
int CLKDIOPin = 7; // Pin11 74HC595
int DATADIOPin = 8; // Pin14 74HC595
unsigned int d; // Data to be sent to the Shift Register
int dir = 0; // Running Direction 1
char buf[12]; // GP Buffer
void setup() {
pinMode(LATCHDIOPin, OUTPUT);
pinMode(CLKDIOPin, OUTPUT);
pinMode(DATADIOPin, OUTPUT);
d = 1;
}
void loop() {
delay(200);
digitalWrite(LATCHDIOPin, LOW);
shiftOut(DATADIOPin, CLKDIOPin, MSBFIRST, (0xff00 & d) >> 8);
shiftOut(DATADIOPin, CLKDIOPin, MSBFIRST, 0x00ff & d);
digitalWrite(LATCHDIOPin, HIGH);
if (!dir) d<<=1; else d>>=1; // Shift
if (d&0x8000) dir=1; // Set direction
if (d&0x0001) dir=0;
}
LED 디스플레이에서 16비트 출력을 얻으려면 16비트를 시프트 레지스터로 보내야 하며, 비트를 왼쪽에서 오른쪽(MSB 먼저)으로 보내는 것이 매우 중요합니다.
shiftOut(dataPin, clockPin, MSBFIRST, highByte(numberToDisplay));
shiftOut(dataPin, clockPin, MSBFIRST, lowByte(numberToDisplay));
시프트 연산을 호출하기 전에 래치 핀을 낮게 설정하는 것이 필수적입니다. 그러면 장치에 다음 비트를 즉시 처리해서는 안 된다는 것을 알리기만 하면 됩니다. shiftOut() 호출이 반환되면 래치 핀 신호가 하이로 설정되어 쉬프트 레지스터에 비트를 저장합니다.
쉬프트 레지스터와 상호 작용하는 방법에 대한 자세한 정보를 얻으려면 다양한 온라인 튜토리얼을 살펴보세요(예: https://www.arduino.cc/en/Tutorial/ShiftOut을 읽어보세요). 데모 코드에서 쉬프트 아웃 함수는 비트 쉬프트를 통해 두 부분으로 분할하여 16비트 값을 출력하는 데 두 번 사용됩니다(쉬프트 아웃은 바이트에서만 작동하므로 한 번에 8비트의 데이터만 처리할 수 있음).
또 다른 추천 자료는 https://weworkweplay.com/play/practical-guide-to-shift-registers/입니다.
프로토타입은 양면 프로토타입 보드(사진에 잘 나오지 않는 보드)에 배선되었습니다. 그러나 빠른 테스트 비디오는 다른 재활용 하드웨어인 Arduino LED 실드로 만들어졌으며, 내 설계 규칙을 충족하도록 정확히 다시 배선했습니다. 보세요...
이제 모든 힘든 작업이 끝났습니다! 다음으로, 조립한 모듈을 원하는 마이크로컨트롤러에 연결하고 재미있게 시작하세요. Arduino, PIC, RPi 등을 위한 훌륭한 코드로 시작할 수 있는 수많은 예제 프로그램이 있습니다. 의견/제안(또는 실망)이 있으면 연락해 주세요.
언제나 늘 항상 참고 문서 원본은 이 링크를 따라가시면 만날 수 있습니다.
배움을 멈추지 마세요. 절대 포기하지 마세요.
여기까지 시간 내 읽어주셔서 감사합니다.
'ESP32' 카테고리의 다른 글
ESP32 WROOM 핀아웃: ESP32 GPIO 핀 사용 (1) | 2024.11.19 |
---|---|
BLE 통신 방법과 프로토콜 구조, 라이브러리 설명 (3) | 2024.11.17 |
ESP32 Arduino Websocket 서버: JSON 콘텐츠 수신 및 파싱 (1) | 2024.11.14 |
TM74 LED Driver - 4 digit 7 segment (1) | 2024.11.11 |
Android 폰에서 ESP32로 데이터를 보내는 방법 (5) | 2024.11.11 |
esp32에서 블루투스를 사용하여 스마트폰과 데이터를 주고받는 방법 (2) | 2024.11.10 |
ESP32 센서 데이터 대시보드 BLE, Flask 서버, SQLite (5) | 2024.11.09 |
ESP32 74HC595 4자리 7세그먼트 디스플레이 (2) | 2024.11.08 |
더욱 좋은 정보를 제공하겠습니다.~ ^^