본문 바로가기

ESP32

ESP32 74HC595 4자리 7세그먼트 디스플레이

반응형

 

ESP32 - 74HC595 4자리 7세그먼트 디스플레이

 

이 튜토리얼은 ESP32를 사용하여 74HC595 4자리 7세그먼트 디스플레이 모듈을 제어하는 방법을 안내합니다. 다음 주제를 다룹니다. 이 튜토리얼의 참고 문서 링크는 다 좋은 데 카피를 하기가 어렵다. 물론 이미지와 코드는 잘 데리고 온다. 지금은 에버노트에 저장하고 그다음 번역하였다. 그래도 내용만으로 감사하다. ^^

 

아래 링크는 다른 방식으로 할 경우를 위해 남겨둔다.

 

참고하고 다른 방식 알아본다.

https://randomnerdtutorials.com/arduino-temperature-displayed-on-4-digit-7-segment/

 

이거로 해볼까?

https://microcontrollerslab.com/esp32-74hc595-4-digit-7-segment-display/

 

 

 

 

 

 

- ESP32를 74HC595 4자리 7세그먼트 디스플레이 모듈에 연결

- ESP32를 프로그래밍하여 모듈에 정수를 표시

- ESP32를 프로그래밍하여 모듈에 부동 소수점 숫자를 표시

- ESP32를 프로그래밍하여 모듈에 숫자와 문자를 표시

 

 

 

 

이 튜토리얼은 부동 소수점 값을 표시할 수 있는 4점 4자리 7세그먼트 디스플레이 모듈을 활용합니다. 콜론 구분 기호를 표시해야 하는 경우 TM1637 4자리 7세그먼트 디스플레이 모듈을 참조하세요.

 

이 튜토리얼에서 사용된 하드웨어는 위 연결도를 참고하세요.

 

74HC595 4자리 7세그먼트 디스플레이 소개

 

온도 또는 모든 부동 소수점 값을 표시하는 데 이상적인 모듈은 74HC595 4자리 7세그먼트 디스플레이입니다. 이 모듈에는 일반적으로 7세그먼트 LED 4개, 점 모양 LED 4개, 각 숫자에 대한 74HC595 드라이버 2개가 포함됩니다.

 

핀아웃

 

74HC595 4자리 7세그먼트 디스플레이 모듈에는 5개의 핀이 포함됩니다.

  • SCLK 핀: 클록 입력 핀입니다. ESP32의 모든 디지털 핀에 연결합니다.
  • RCLK 핀: 클록 입력 핀입니다. ESP32의 모든 디지털 핀에 연결합니다.
  • DIO 핀: 데이터 I/O 핀입니다. ESP32의 모든 디지털 핀에 연결합니다.
  • VCC 핀: 모듈에 전원을 공급합니다. 3.3V~5V 전원 공급 장치에 연결합니다.
  • GND 핀: 접지 핀입니다.

 

배선 다이어그램

 

아래 표는 ESP32 핀과 74HC595 4자리 7세그먼트 디스플레이 핀 간의 배선을 보여줍니다.

 

ESP32  ------ 74HC595 7세그먼트 디스플레이

Vin   5V

27    SCLK

26    RCLK

25    DIO

 

다른 핀을 사용하는 경우 코드의 핀 번호를 적절히 수정해야 합니다.

 

 

 

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 클릭하여 이미지 확대

 

ESP32 및 기타 구성 요소에 전원을 공급하는 방법에 익숙하지 않은 경우 다음 자습서에서 지침을 찾을 수 있습니다. ESP32에 전원을 공급하는 방법.

 

라이브러리 설치

 

74HC595 4자리 7세그먼트 디스플레이를 쉽게 프로그래밍하려면 DIYables.io의 DIYables_4Digit7Segment_74HC595 라이브러리를 설치해야 합니다. 라이브러리를 설치하려면 아래 단계를 따르세요.

 

  • Arduino IDE의 왼쪽 막대에 있는 라이브러리 아이콘을 클릭합니다.
  • "DIYables_4Digit7Segment_74HC595"를 검색한 다음 DIYables.io의 DIYables_4Digit7Segment_74HC595 라이브러리를 찾습니다.
  • 설치 버튼을 클릭합니다.

 

 

 

Github에서도 이 라이브러리를 볼 수 있습니다.

 

ESP32를 사용하여 74HC595 4자리 7세그먼트를 프로그래밍하는 방법

 

- 라이브러리 포함

#include <DIYables_4Digit7Segment_74HC595.h>

 

- 디스플레이 모듈의 SCLK, RCLK 및 DIO에 연결되는 ESP32의 핀을 정의합니다. 예를 들어, 핀 D7, D6 및 D5

 

#define SCLK  27  // The ESP32 pin GPIO27 connected to SCLK
#define RCLK  26  // The ESP32 pin GPIO26 connected to RCLK
#define DIO   25  // The ESP32 pin GPIO25 connected to DIO

 

- DIYables_4Digit7Segment_74HC595 유형의 디스플레이 객체를 만듭니다.

 

DIYables_4Digit7Segment_74HC595 display = DIYables_4Digit7Segment_74HC595(CLK, DIO);

 

- 그런 다음 음수를 지원하는 0 패딩 옵션으로 정수를 표시할 수 있습니다.

display.printInt(-13, false); // you can display a value from -999 to 9999

 

- 소수점 자리, 0 채우기 옵션, 음수 지원으로 부동 소수점 숫자를 표시할 수 있습니다.

 

display.printFloat(-9.2,  1, false);

 

- 하위 수준 함수를 사용하여 숫자, 소수점, 문자를 자릿수별로 표시할 수도 있습니다.

 

// display 9.3°C
display.clear();
display.setNumber(1, 9);              // set 9 at the 1st digit
display.setDot(1);                    // set . at the 1st digit
display.setNumber(2, 3);              // set 3 at the 2nd digit
display.setChar(3, SegChars::DEGREE); // set ° at the 3rd digit
display.setChar(4, SegChars::C);      // set C at the 3rd digit
display.show();                       // show on the display

 

 

74HC595 4자리 7세그먼트 모듈은 멀티플렉싱 기술을 사용하여 개별 세그먼트와 LED를 제어하므로 ESP32 코드는 다음을 수행해야 합니다.

 

- 메인 루프에서 display.show() 함수를 호출합니다.

- 메인 루프에서 delay() 함수를 사용하지 않습니다.

 

라이브러리 참조에서 자세한 내용을 확인할 수 있습니다.

 

ESP32 코드 - 정수 표시

 

/*
 * This ESP32 code is created by esp32io.com
 *
 * This ESP32 code is released in the public domain
 *
 * For more detail (instruction and wiring diagram), visit https://esp32io.com/tutorials/esp32-74hc595-4-digit-7-segment-display
 */

#include <DIYables_4Digit7Segment_74HC595.h> // DIYables_4Digit7Segment_74HC595 library

#define SCLK  27  // The ESP32 pin GPIO27 connected to SCLK
#define RCLK  26  // The ESP32 pin GPIO26 connected to RCLK
#define DIO   25  // The ESP32 pin GPIO25 connected to DIO

DIYables_4Digit7Segment_74HC595 display(SCLK, RCLK, DIO);

void setup() {
  Serial.begin(9600);

  display.printInt(-13, false); // you can display a value from -999 to 9999
  //display.printInt(-132, false);
  //display.printInt(9132, false);
  //display.printInt(132, false);
  //display.printInt(32, false);
  //display.printInt(2, false);
  //display.printInt(2, true);
}

void loop() {
  display.loop(); // MUST call the display.loop() function in loop()

  // DO SOMETHING HERE
  // NOTE: do NOT use the delay() function in loop because it affects to the multiplexing
}

 

빠른 지침

 

- ESP32를 처음 사용하는 경우 Arduino IDE에서 ESP32 환경을 설정하는 방법을 참조하세요.

- 위 이미지와 같이 배선합니다.

- 마이크로 USB 케이블을 통해 ESP32 보드를 PC에 연결합니다.

- PC에서 Arduino IDE를 엽니다.

- 올바른 ESP32 보드(예: ESP32 Dev Module)와 COM 포트를 선택합니다.

- 위의 코드를 복사하여 ESP32 IDE로 엽니다.

- ESP32 IDE에서 업로드 버튼을 클릭하여 코드를 ESP32에 업로드합니다.

- 7세그먼트 디스플레이의 상태를 확인합니다.

 

ESP32 코드 - 플로트 표시

 

/*
 * This ESP32 code is created by esp32io.com
 *
 * This ESP32 code is released in the public domain
 *
 * For more detail (instruction and wiring diagram), visit https://esp32io.com/tutorials/esp32-74hc595-4-digit-7-segment-display
 */

#include <DIYables_4Digit7Segment_74HC595.h> // DIYables_4Digit7Segment_74HC595 library

#define SCLK  27  // The ESP32 pin GPIO27 connected to SCLK
#define RCLK  26  // The ESP32 pin GPIO26 connected to RCLK
#define DIO   25  // The ESP32 pin GPIO25 connected to DIO

DIYables_4Digit7Segment_74HC595 display(SCLK, RCLK, DIO);

void setup() {
  Serial.begin(9600);
  display.printFloat(-9.2,  1, false);
  //display.printFloat(-92.4, 1, false);
  //display.printFloat(-9.24, 2, false);
  //display.printFloat(192.4, 1, false);
  //display.printFloat(19.24, 2, false);
  //display.printFloat(1.924, 3, false);
}

void loop() {
  display.loop(); // MUST call the display.loop() function in loop()

  // DO SOMETHING HERE
  // NOTE: do NOT use the delay() function in loop because it affects to the multiplexing
}

 

 

ESP32 코드 - 온도 표시

 

/*
 * This ESP32 code is created by esp32io.com
 *
 * This ESP32 code is released in the public domain
 *
 * For more detail (instruction and wiring diagram), visit https://esp32io.com/tutorials/esp32-74hc595-4-digit-7-segment-display
 */

#include <DIYables_4Digit7Segment_74HC595.h> // DIYables_4Digit7Segment_74HC595 library

#define SCLK  27  // The ESP32 pin GPIO27 connected to SCLK
#define RCLK  26  // The ESP32 pin GPIO26 connected to RCLK
#define DIO   25  // The ESP32 pin GPIO25 connected to DIO

DIYables_4Digit7Segment_74HC595 display(SCLK, RCLK, DIO);

void setup() {
  Serial.begin(9600);

  // display 9.3°C by controlling digit by digit
  display.clear();
  display.setNumber(1, 9);              // set 9 at the 1st digit
  display.setDot(1);                    // set . at the 1st digit
  display.setNumber(2, 3);              // set 3 at the 2nd digit
  display.setChar(3, SegChars::DEGREE); // set ° at the 3rd digit
  display.setChar(4, SegChars::C);      // set C at the 3rd digit
  display.show();                       // show on the display
}

void loop() {
  display.loop(); // MUST call the display.loop() function in loop()

  // DO SOMETHING HERE
  // NOTE: do NOT use the delay() function in loop because it affects to the multiplexing
}

 

 

 

시계 표시에 사용하는 TM1634 4 Digit 7 Segment 디스플레이 기사를 참고하세요.

 

 

 

반응형

더욱 좋은 정보를 제공하겠습니다.~ ^^