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

시계, 타이머 및 카운터 프로젝트에는 표준 4자리 7세그먼트 디스플레이가 필요하지만, 대체로 12개의 연결이 필요합니다. TM1637 모듈은 전원을 위한 2개와 세그먼트를 제어하기 위한 2개, 총 4개의 연결만으로 이를 더 쉽게 만듭니다.

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

Arduino TM1637 4-digit 7-segment display

이 튜토리얼에서는 콜론으로 구분된 4자리 7세그먼트 디스플레이 모듈을 사용할 것입니다. 실수를 표시하고 싶다면, 74HC595 4자리 7세그먼트 디스플레이 모듈을 사용해 주세요.

준비물

1×Arduino Uno Amazon
1×USB 2.0 cable type A/B 쿠팡 | Amazon
1×TM1637 4-digit 7-segment Display (colon-separated) 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
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

TM1637 4자리 7세그먼트 디스플레이에 관하여

TM1637 모듈은 일반적으로 네 개의 7-세그먼트 LED와 가운데 콜론 모양의 LED로 구성됩니다: 이는 시간을 시간과 분, 또는 분과 초, 또는 두 팀의 점수를 표시하는 데 이상적입니다.

핀배치

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

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

선연결

TM1637을 아두이노에 연결하려면 네 개의 전선을 연결하세요: 두 개는 전력을 위한 것이고 두 개는 디스플레이를 제어하기 위한 것입니다. 모듈은 아두이노의 5볼트 출력에서 전원을 공급받을 수 있습니다. CLK와 DIO 핀을 아두이노의 아무 디지털 핀에나 연결하세요. 예를 들어, 아두이노의 2번과 3번에 연결합니다. 코드 내의 핀 번호는 사용하는 핀이 다를 경우 변경해야 합니다.

Arduino TM1637 Module Wiring Diagram

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

라이브러리 설치

TM1637 4자리 7세그먼트 디스플레이를 쉽게 프로그래밍하려면 Avishay Orpaz가 제작한 TM1637Display 라이브러리를 설치해야 합니다. 라이브러리를 설치하려면 아래 단계를 따르십시오:

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

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

  • 라이브러리를 포함하세요.
#include <TM1637Display.h>

디스플레이 모듈의 CLK와 DIO에 연결되는 아두이노의 핀을 정의합니다. 예를 들어, 핀 D9와 D10

#define CLK 9 #define DIO 10

TM1637Display 타입의 디스플레이 객체를 생성하십시오.

TM1637Display display = TM1637Display(CLK, DIO);
  • 그러면 숫자, 소수점이 있는 숫자, 마이너스 부호가 있는 숫자 또는 글자를 표시할 수 있습니다. 글자의 경우에는 글자 형태를 정의해야 합니다. 하나씩 살펴보겠습니다.
  • 숫자 표시: 아래 예시를 참고하세요. 아래 설명에서 '_'는 실제로 아무것도 표시하지 않는 숫자를 대신합니다.
display.showNumberDec(-12); // 표시된 _-12 display.showNumberDec(-999); // 표시된 -999 display.showNumberDec(42); // 표시된 __42 display.showNumberDec(42, false); // 표시된 __42 display.showNumberDec(42, false, 2, 0); // 표시된 42__ => 위치 0에서 2자리 표시 display.showNumberDec(42, true); // 표시된 0042 => 0으로 채우기 display.showNumberDec(14, false, 2, 1); // 표시된 _14_ display.showNumberDec(-5, false, 3, 0); // 표시된 _-5_ display.showNumberDec(1234); // 표시된 1234

콜론이나 점을 사용하여 숫자를 표시하십시오.

// 콜론으로 구분된 모듈에서 15:30을 표시하거나, 콜론으로 구분된 모듈에서 15.30을 표시합니다. display.showNumberDecEx(1530, 0b11100000, false, 4, 0);

이 튜토리얼의 끝에 있는 함수 참조에서 더 자세한 정보를 볼 수 있습니다.

아두이노 코드

/* * 이 Arduino 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino/arduino-tm1637-4-digit-7-segment-display */ #include <TM1637Display.h> // 연결 핀을 정의한다 #define CLK 9 #define DIO 10 // TM1637Display 타입의 디스플레이 객체를 생성한다 TM1637Display display = TM1637Display(CLK, DIO); // "dOnE"라는 단어를 표시하기 위해 각 자릿수별로 세그먼트를 설정하는 배열 const uint8_t done[] = { SEG_B | SEG_C | SEG_D | SEG_E | SEG_G, // d SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F, // O SEG_C | SEG_E | SEG_G, // n SEG_A | SEG_D | SEG_E | SEG_F | SEG_G // E }; // 섭씨 기호 const uint8_t celsius[] = { SEG_A | SEG_B | SEG_F | SEG_G, // 도 기호 SEG_A | SEG_D | SEG_E | SEG_F // C }; void setup() { display.clear(); display.setBrightness(7); // 밝기를 7로 설정한다 (0:가장 어둡게, 7:가장 밝게) } void loop() { // 0-9까지 카운터 표시 int i; for (i = 0; i < 10; i++) { display.showNumberDec(i); delay(500); display.clear(); } display.showNumberDec(-91); // _-91 표시 delay(2000); display.clear(); display.showNumberDec(-109); // -109 표시 delay(2000); display.clear(); display.showNumberDec(21, false); // __21 표시 delay(2000); display.clear(); display.showNumberDec(21, true); // 0021 표시 delay(2000); display.clear(); display.showNumberDec(28, false, 2, 1); // _28_ 표시 delay(2000); display.clear(); display.showNumberDec(-9, false, 3, 0); // _-9_ 표시 delay(2000); display.clear(); // 15:30 표시 display.showNumberDecEx(1530, 0b11100000, false, 4, 0); delay(2000); display.clear(); // 23°C 표시 int temperature = 23; // 또는 온도 센서에서 읽기 display.showNumberDec(temperature, false, 2, 0); display.setSegments(celsius, 2, 2); delay(2000); display.clear(); // dOnE라는 글자 표시 display.setSegments(done); delay(2000); display.clear(); }

사용 방법

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

동영상

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

함수 참조

아래는 다음 함수를 위한 참조입니다:

  • display.clear() - display.clear()
  • display.showNumberDec() - display.showNumberDec()
  • display.showNumberDecEx() - display.showNumberDecEx()
  • display.setSegments() - display.setSegments()
  • display.setBrightness() - display.setBrightness()

display.clear()

디스플레이.clear()

설명

이 기능은 디스플레이를 지웁니다. 모든 LED를 끕니다.

display.showNumberDec()를 표시합니다.

설명

이 기능은 7-세그먼트 디스플레이에 소수점 숫자를 표시하는 데 사용됩니다.

구문론

void showNumberDec(int num, bool leading_zero = false, uint8_t length = 4, uint8_t pos = 0);

매개변수

  • num: 이것은 7-세그먼트 디스플레이에 표시될 숫자입니다. -9999에서 9999 범위 안에 있어야 합니다.
  • leading_zero: 이것은 기본값이 false인 선택적 매개변수입니다. 이것이 true로 설정되면 선행 0이 표시됩니다.
  • length: 이것은 기본값이 4인 선택적 매개변수입니다. 이것은 7-세그먼트 디스플레이에 표시될 숫자의 자릿수를 설정합니다.
  • pos: 이것은 기본값이 0인 선택적 매개변수입니다. 이것은 숫자의 가장 중요한 자리의 위치를 설정합니다.

참고로, 숫자가 범위를 벗어나거나 길이의 값이 4보다 크면 함수는 아무것도 표시하지 않습니다.

showNumberDecEx()를 보여주다

설명

이 함수는 showNumberDec() 함수에 비해 추가 기능을 가진 7세그먼트 디스플레이에서 십진수를 표시하는 데 사용됩니다. 이것은 각 자릿수의 점이나 콜론 세그먼트를 개별적으로 제어할 수 있게 해주는 showNumberDec()의 고급 버전입니다.

구문론

void showNumberDecEx(int num, uint8_t dots, bool leading_zero = false, uint8_t length = 4, uint8_t pos = 0);

매개 변수

  • num1: 이것은 7세그먼트 디스플레이에 표시될 숫자입니다. -9999부터 9999까지의 범위 내에 있어야 합니다.
  • dots: 이 매개변수는 디스플레이의 어떤 세그먼트가 점으로 켜질지를 지정하는 데 사용됩니다. 값의 각 비트는 디스플레이상의 숫자에 해당합니다: 유효한 값
    • 0b10000000: 첫 번째 점을 표시: 0.000
    • 0b01000000: 두 번째 점을 표시: 00.00
    • 0b00100000: 세 번째 점을 표시: 000.0
    • 0b01000000: 콜론만 있는 디스플레이의 경우: 00:00
  • leading_zero: 이것은 기본 값이 false인 선택적 매개변수입니다. true로 설정되면 선행 제로가 표시됩니다.
  • length: 이것은 기본 값이 4인 선택적 매개변수입니다. 7세그먼트 디스플레이에 표시될 숫자의 개수를 설정합니다.
  • pos: 이것은 기본 값이 0인 선택적 매개변수입니다. 숫자의 가장 유의미한 자리의 위치를 설정합니다.

예를 들어, display.showNumberDecEx(1530,0b01000000);를 호출하면 7-세그먼트 디스플레이에 15:30이라는 숫자가 표시됩니다.

참고하세요, 만약 숫자가 범위를 벗어나거나 길이의 값이 4보다 크면, 함수는 아무것도 표시하지 않을 것입니다.

세그먼트 설정하기()

설명

이 함수는 7-세그먼트 디스플레이의 세그먼트를 직접 설정하는 데 사용됩니다. 문자, 특수 문자를 표시하거나 모든 LED 세그먼트를 켜는 데 사용할 수 있습니다.

문법

void setSegments(const uint8_t segments[], uint8_t length = 4, uint8_t pos = 0);

매개변수

  • segments: 이 매개변수는 7-세그먼트 디스플레이의 세그먼트를 설정합니다. 이것은 바이트의 배열로, 각 바이트가 각 자릿수의 세그먼트를 나타냅니다. 각 세그먼트는 바이트 내의 비트로 표시됩니다.
  • length: 이것은 선택적 매개변수로 기본값은 4입니다. 이는 7-세그먼트 디스플레이에 표시될 숫자의 자릿수를 설정합니다.
  • pos: 이것은 선택적 매개변수로 기본값은 0입니다. 이는 숫자의 가장 중요한 자릿수의 위치를 설정합니다.

이 기능은 기본 7-세그먼트 디스플레이에 포함되지 않은 문자나 기호를 표시하고자 할 때 유용합니다. 세그먼트를 직접 설정함으로써 원하는 어떤 패턴이든 표시할 수 있습니다.

참고로, 숫자가 범위를 벗어나거나 길이의 값이 4보다 크면, 함수는 아무것도 표시하지 않습니다.

setBrightness()를 설정하다

설명

해당 함수는 7세그먼트 디스플레이의 밝기를 설정하는 데 사용됩니다.

구문

cpp void setBrightness(uint8_t brightness, bool on = true);

매개 변수

  • 밝기: 이 매개변수는 7-세그먼트 디스플레이의 밝기 수준을 설정합니다. 값은 0에서 7 사이여야 합니다. 값이 높을수록 디스플레이가 더 밝아집니다.
  • 켜짐: 이것은 기본값이 true인 선택적 매개변수입니다. 디스플레이를 켜거나 끄는 데 사용됩니다. false로 설정되면 디스플레이가 꺼집니다.

※ 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!