아두이노 - 74HC595 4자리 7세그먼트 디스플레이 | Arduino - 74HC595 4-Digit 7-Segment Display

시계, 타이머 및 카운터 프로젝트에는 표준 4자리 7-세그먼트 디스플레이가 필요하지만, 보통 12개의 연결이 필요합니다. 74HC595 모듈은 전원을 위한 2개와 세그먼트를 제어하기 위한 3개로, 총 5개의 연결만 요구하여 작업을 더 쉽게 만들어 줍니다.

이 튜토리얼에서는 하드웨어에 대해 깊이 파고들어 여러분을 압도하지 않을 것입니다. 대신에, 4자리 7-세그먼트 디스플레이를 아두이노에 어떻게 연결하는지, 우리가 원하는 것을 표시하도록 어떻게 프로그래밍하는지 배우게 될 것입니다.

Arduino 74HC595 4-digit 7-segment display

이 튜토리얼은 부동 소수점 값을 표시할 수 있는 4점 4자리 7-세그먼트 디스플레이 모듈을 사용할 예정입니다. 콜론 구분자를 표시하고 싶다면, TM1637 4자리 7-세그먼트 디스플레이 모듈을 사용해 주세요.

준비물

1×Arduino Uno Amazon
1×USB 2.0 cable type A/B 쿠팡 | Amazon
1×74HC595 4-digit 7-segment Display Amazon
1×Jumper Wires Amazon
1×(Optional) 9V Power Adapter for Arduino Amazon
1×(Recommended) Screw Terminal Block Shield for Arduino Uno 쿠팡 | Amazon
1×(Optional) Transparent Acrylic Enclosure For Arduino Uno Amazon
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

74HC595 4자리 7세그먼트 디스플레이에 대하여

74HC595 4자리 7세그먼트 디스플레이 모듈은 일반적으로 4개의 7세그먼트 LED, 4개의 점 형태 LED, 그리고 각 자릿수를 위한 74HC595 드라이버로 구성됩니다: 이는 온도나 어떤 십진수 값을 보여주기에 이상적입니다.

핀배열

74HC595 4자리 7세그먼트 디스플레이 모듈에는 5개의 핀이 포함되어 있습니다:

  • SCLK 핀: 클록 입력 핀입니다. 아두이노의 디지털 핀에 연결하세요.
  • RCLK 핀: 클록 입력 핀입니다. 아두이노의 디지털 핀에 연결하세요.
  • DIO 핀: 데이터 입출력 핀입니다. 아두이노의 디지털 핀에 연결하세요.
  • VCC 핀: 모듈에 전력을 공급합니다. 3.3V에서 5V 전원 공급장치에 연결하세요.
  • GND 핀: 접지 핀입니다.
74HC595 module pinout

선연결

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

Arduino 74HC595 7-segment display
5V5V
7SCLK
6RCLK
5DIO

코드에서 사용하는 핀 번호는 다른 핀이 사용되는 경우 변경되어야 합니다.

Arduino 74HC595 Module Wiring Diagram

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

라이브러리 설치

74HC595 4자리 7세그먼트 디스플레이를 쉽게 프로그래밍하기 위해, DIYables.io에서 제공하는 DIYables_4Digit7Segment_74HC595 라이브러리를 설치해야 합니다. 라이브러리를 설치하기 위한 아래 단계를 따라주세요:

  • Arduino IDE의 왼쪽 바에 있는 Libraries 아이콘으로 이동하세요.
  • “DIYables_4Digit7Segment_74HC595”를 검색한 다음, DIYables.io의 DIYables_4Digit7Segment_74HC595 라이브러리를 찾으세요.
  • Install 버튼을 클릭하세요.
Arduino 74HC595 4-digit 7-segment display library

GitHub에서 이 라이브러리를 확인할 수도 있습니다

아두이노를 사용한 74HC595 4자리 7세그먼트 프로그래밍 방법

라이브러리를 포함하세요.

#include <DIYables_4Digit7Segment_74HC595.h>

디스플레이 모듈의 SCLK, RCLK 및 DIO에 연결되는 아두이노의 핀을 정의하세요. 예를 들어, 핀 D7, D6 및 D5

#define SCLK 7 // 아두이노 핀이 SCLK에 연결됨 #define RCLK 6 // 아두이노 핀이 RCLK에 연결됨 #define DIO 5 // 아두이노 핀이 DIO에 연결됨
  • DIYables_4Digit7Segment_74HC595 타입의 디스플레이 객체 생성하기
DIYables_4Digit7Segment_74HC595 display = DIYables_4Digit7Segment_74HC595(CLK, DIO);

그러면 0으로 채우는 옵션을 사용하여 정수를 표시할 수 있으며, 음수도 지원합니다.

display.printInt(-13, false); // -999에서 9999까지의 값을 표시할 수 있습니다.

음수를 지원하면서 소수점 자릿수, 0으로 채우기 옵션을 사용하여 부동 소수점 숫자를 표시할 수 있습니다.

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

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

// 9.3°C 표시하기 display.clear(); display.setNumber(1, 9); // 1번째 자리에 9 설정 display.setDot(1); // 1번째 자리에 . 설정 display.setNumber(2, 3); // 2번째 자리에 3 설정 display.setChar(3, SegChars::DEGREE); // 3번째 자리에 ° 설정 display.setChar(4, SegChars::C); // 4번째 자리에 C 설정 display.show(); // 디스플레이에 표시하기

74HC595 4자리 7세그먼트 모듈은 멀티플렉싱 기술을 사용하여 개별 세그먼트와 LED를 제어하기 때문에, 아두이노 코드는 반드시:

  • 메인 루프에서 display.show() 함수를 호출해야 합니다.
  • 메인 루프에서 delay() 함수를 사용해서는 안 됩니다.

더 자세한 내용은 도서관 참조에서 확인할 수 있습니다.

아두이노 코드 - 정수 표시

/* DIYables 제작 이 예제 코드는 공개 도메인에 있습니다. 제품 페이지: https://diyables.io/products/4-digit-7-segment-display-led-74hc595-driver-with-4-dots */ #include <DIYables_4Digit7Segment_74HC595.h> // DIYables_4Digit7Segment_74HC595 라이브러리 #define SCLK 7 // SCLK에 연결된 Arduino 핀 #define RCLK 6 // RCLK에 연결된 Arduino 핀 #define DIO 5 // DIO에 연결된 Arduino 핀 DIYables_4Digit7Segment_74HC595 display(SCLK, RCLK, DIO); void setup() { Serial.begin(9600); display.printInt(-13, false); // -999에서 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(); // loop()에서 display.loop() 함수를 반드시 호출해야 합니다. // 여기서 무엇인가를 실행 // 참고: loop에서 delay() 함수를 사용하지 마세요. 멀티플렉싱에 영향을 줍니다. }

사용 방법

  • 위의 코드를 복사하고 Arduino IDE로 열기
  • Arduino IDE에서 Upload 버튼을 클릭하여 Arduino에 코드를 업로드합니다.
  • 7세그먼트 디스플레이의 상태를 확인하세요.

아두이노 코드 - 실수 표시

/* Created by DIYables This example code is in the public domain Product page: https://diyables.io/products/4-digit-7-segment-display-led-74hc595-driver-with-4-dots */ #include <DIYables_4Digit7Segment_74HC595.h> // DIYables_4Digit7Segment_74HC595 라이브러리 #define SCLK 7 // SCLK에 연결된 Arduino 핀 #define RCLK 6 // RCLK에 연결된 Arduino 핀 #define DIO 5 // DIO에 연결된 Arduino 핀 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(); // loop()에서 display.loop() 함수를 호출해야 함 // 여기에 무언가를 실행 // 참고: loop에서 delay() 함수를 사용하지 마십시오. 이것은 멀티플렉싱에 영향을 줍니다. }

아두이노 코드 - 온도 표시

/* DIYables 제작 이 예제 코드는 공용 도메인에 있습니다. 제품 페이지: https://diyables.io/products/4-digit-7-segment-display-led-74hc595-driver-with-4-dots */ #include <DIYables_4Digit7Segment_74HC595.h> // DIYables_4Digit7Segment_74HC595 라이브러리 #define SCLK 7 // 아두이노 핀 SCLK에 연결됨 #define RCLK 6 // 아두이노 핀 RCLK에 연결됨 #define DIO 5 // 아두이노 핀 DIO에 연결됨 DIYables_4Digit7Segment_74HC595 display(SCLK, RCLK, DIO); void setup() { Serial.begin(9600); // 자릿수별 제어로 9.3°C 표시 display.clear(); display.setNumber(1, 9); // 1번째 자릿수에 9 설정 display.setDot(1); // 1번째 자릿수에 . 설정 display.setNumber(2, 3); // 2번째 자릿수에 3 설정 display.setChar(3, SegChars::DEGREE); // 3번째 자릿수에 ° 설정 display.setChar(4, SegChars::C); // 4번째 자릿수에 C 설정 display.show(); // 디스플레이에 표시 } void loop() { display.loop(); // loop() 함수에서 display.loop() 함수를 반드시 호출해야 함 // 여기서 뭔가 하기 // 참고: loop에서 delay() 함수 사용하지 말 것으로, 멀티플렉싱에 영향을 줍니다 }

결과는 아래 이미지와 같습니다:

Arduino 74HC595 module displays temperature

동영상

비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.

댓글

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!