아두이노 우노 Q 74HC595 4자리 7세그먼트 디스플레이

Arduino UNO Q를 사용하여 컴팩트한 4자리 LED 디스플레이에 숫자를 표시하고 싶나요? 이 초급자 친화적인 튜토리얼은 Arduino UNO Q에서 74HC595 4자리 7세그먼트 디스플레이를 사용하는 방법을 단계별로 보여줍니다.

이 튜토리얼에서 다음을 배우게 됩니다:

Arduino UNO Q 74hc595 4자리 7세그먼트 디스플레이

필요한 하드웨어

1×Arduino UNO Q 아마존
1×USB Cable for Arduino Uno Q 아마존
1×74HC595 4-digit 7-segment 디스플레이 쿠팡 | 아마존
1×점퍼케이블 쿠팡 | 아마존
1×(추천) 아두이노 우노용 스크루 터미널 블록 쉴드 쿠팡 | 아마존
1×(추천) Sensors/Servo Expansion Shield for Arduino Uno 쿠팡 | 아마존
1×(추천) 아두이노 우노용 브레드보드 쉴드 쿠팡 | 아마존
1×(추천) 아두이노 우노용 케이스 쿠팡 | 아마존
1×(추천) 아두이노 우노용 프로토타이핑 베이스 플레이트 & 브레드보드 키트 아마존
공개: 이 포스팅 에 제공된 일부 링크는 아마존 제휴 링크입니다. 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

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

74HC595 기반 4자리 7세그먼트 디스플레이는 4개의 LED 자리 모듈을 시프트 레지스터와 결합하므로 MCU 핀 3개만으로 모든 4자리를 제어할 수 있습니다.

주요 스펙 및 기능:

  • 자리: 4개 자리, 각각 7개의 LED 세그먼트 + 소수점
  • 시프트 레지스터: 74HC595 — 3개의 와이어를 사용하여 데이터를 직렬로 시프트
  • 인터페이스: SPI와 유사 (SCLK, RCLK, DIO) — 간단하고 효율적
  • 전원: 3.3V 또는 5V 호환
  • 라이브러리: DIYables_4Digit7Segment_74HC595 — 정수, 부동소수점, 텍스트, 온도 및 시간 표시 지원
  • 멀티플렉싱: 라이브러리가 자리 멀티플렉싱을 처리합니다 — 디스플레이를 새로 고침 상태로 유지하려면 display.loop()을 자주 호출하세요

핀아웃

74hc595 4자리 7세그먼트 디스플레이 핀아웃
기능 설명
SCLK (SH_CP) 직렬 클록 데이터 시프트를 위한 클록 신호
RCLK (ST_CP) 레지스터 클록 출력으로 데이터를 푸시하기 위한 래치
DIO (DS) 데이터 입력 시프트 레지스터로 공급되는 직렬 데이터
VCC 전원 3.3V 또는 5V 공급
GND 접지 공통 접지

배선 다이어그램

그림과 같이 74HC595 4자리 7세그먼트 디스플레이를 Arduino UNO Q MCU에 연결합니다:

Arduino UNO Q 74hc595 4자리 7세그먼트 디스플레이 배선 다이어그램

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

74HC595 디스플레이 핀 Arduino UNO Q MCU 핀 설명
SCLK D7 직렬 클록
RCLK D6 레지스터 클록 / 래치
DIO D5 데이터 입력
VCC 5V 전원 공급
GND GND 접지

Arduino UNO Q 코드

Arduino UNO Q에는 함께 작동하는 두 개의 프로세서가 있습니다:

  • STM32 MCU는 74HC595 7세그먼트 디스플레이를 디지털 핀을 통해 직접 구동합니다 — 모든 멀티플렉싱을 처리합니다
  • Qualcomm MPU는 Debian Linux를 실행하고 Wi-Fi, Python 및 클라우드 연결을 처리합니다
  • 이 섹션에서는 MCU만 프로그래밍됩니다 — Linux 측은 유휴 상태입니다. 이후 섹션은 두 프로세서가 Bridge를 통해 함께 작동하는 방법을 보여줍니다.

아래 스케치는 7세그먼트 디스플레이에서 0부터 9999까지 카운트하며, 매초 증가합니다.

중요: 항상 Arduino loop() 함수 내에서 display.loop()을 호출하세요. 라이브러리는 이를 사용하여 4개의 자리를 모두 멀티플렉싱합니다. delay()를 직접 사용하지 마세요 — 대신 display.delay()를 사용하세요.

/* * 이 Arduino UNO Q 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino UNO Q 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-uno-q/arduino-uno-q-74hc595-4-digit-7-segment-display */ #include <DIYables_4Digit7Segment_74HC595.h> #define SCLK_PIN 7 // MCU pin connected to SCLK of 74HC595 7-segment display #define RCLK_PIN 6 // MCU pin connected to RCLK of 74HC595 7-segment display #define DIO_PIN 5 // MCU pin connected to DIO of 74HC595 7-segment display DIYables_4Digit7Segment_74HC595 display(SCLK_PIN, RCLK_PIN, DIO_PIN); int count = 0; unsigned long lastUpdate = 0; void setup() { display.begin(); display.print(0); } void loop() { display.loop(); // Must be called frequently to refresh the display if (millis() - lastUpdate >= 1000) { lastUpdate = millis(); count++; if (count > 9999) count = 0; display.print(count); } }

빠른 단계

Arduino UNO Q를 처음 사용하신가요? 진행하기 전에 아두이노 우노 Q 시작하기 튜토리얼을 따라 개발 환경을 준비하세요.

  • 연결: 그림과 같이 74HC595 디스플레이를 Arduino UNO Q에 배선한 후 USB-C 케이블을 꽂으세요.
  • Arduino App Lab 열기: Arduino App Lab을 시작하고 Arduino UNO Q를 감지할 때까지 기다리세요 — 첫 시작 시 몇 분이 걸릴 수 있습니다.
  • 새 앱 만들기: Create New App 버튼을 클릭하세요.
Arduino UNO Q의 아두이노 app lab에서 새 앱 만들기
  • 앱에 이름을 지정합니다 (예: DIYables_7Seg74HC595).
  • Create를 클릭하여 확인합니다.
  • 새 앱 내에 폴더 및 파일 세트가 생성됩니다.
Arduino UNO Q의 아두이노 app lab 앱 폴더 및 파일
  • sketch/sketch.ino 파일을 찾으세요 — MCU 스케치를 붙여넣을 위치입니다.
  • 스케치 붙여넣기: 위의 MCU 코드를 복사하여 해당 스케치 파일에 붙여넣으세요. 다른 파일은 기본값으로 유지하세요.
    • Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.
    add sketch 라이브러리 in 아두이노 app lab on Arduino UNO Q
    • Search for Arduino_RouterBridge created by Arduino and click the Install button.
    My Apps / DIYables Apps
    Run
    Bricks
    No bricks added...
    Sketch Libraries
    No sketch libra...
    Files
    python
    sketch
    .gitignore
    README.md
    app.yaml
    sketch.ino
    Add sketch library
    Arduino_RouterBridge Arduino

    This library provides a simple RPC bridge for Arduino UNO Q boards, allowing communication between the board and other devices using MsgPack serialization.

    0.4.1
    Install
    More Info
    • Search for DIYables_4Digit7Segment_74HC595 created by DIYables.io and click the Install button.
    My Apps / DIYables Apps
    Run
    Bricks
    No bricks added...
    Sketch Libraries
    No sketch libra...
    Files
    python
    sketch
    .gitignore
    README.md
    app.yaml
    sketch.ino
    Add sketch library
    DIYables_4Digit7Segment_74HC595 DIYables.io

    Supports integers, floats, text, degree symbol, temperature, time display, zero-padding, individual dot control. Common anode and common cathode. Works with all Arduino-compatible boards.

    2.0.0
    Install
    More Info
    • 업로드: Arduino App Lab의 Run 버튼을 클릭하여 STM32로 컴파일 및 업로드합니다.
    Arduino UNO Q의 아두이노 app lab에서 run 버튼 클릭

    7세그먼트 디스플레이가 0부터 9999까지 카운트하기 시작하며, 매초 한 번씩 증가합니다!

    • 팁: 디스플레이에 깨진 문자가 표시되면 네 번째 생성자 인수로 false를 전달해 보세요: DIYables_4Digit7Segment_74HC595 display(SCLK_PIN, RCLK_PIN, DIO_PIN, false) — 공통 양극 (기본값)에서 공통 음극 모드로 전환합니다.

    Bridge: Linux + MCU

    이 섹션은 Arduino UNO Q의 두 프로세서를 모두 프로그래밍하여 Linux 측이 7세그먼트 디스플레이를 원격으로 제어하는 방법을 보여줍니다:

    • 74HC595 7세그먼트 디스플레이는 MCU (STM32)에 연결됩니다 — MCU가 모든 자리 멀티플렉싱을 구동합니다
    • MPU는 디스플레이를 직접 제어할 수 없습니다Bridge.call()을 통해 MCU에 값 업데이트를 요청해야 합니다
    • MPU에는 Wi-Fi가 있습니다 — 전체 Debian Linux를 실행하며, 인터넷에 연결하고 원격으로 디스플레이 업데이트를 푸시할 수 있습니다
    • Arduino_RouterBridge는 두 프로세서 간의 RPC 통신을 사용합니다
    • ⚠️ /dev/ttyHS1 (Linux) 및 Serial1 (MCU)은 라우터에서 예약됨 — 사용자 코드에서 절대 열지 마세요

    간단히 말해서: MCU가 7세그먼트 디스플레이를 구동 → MPU가 값을 전송 → MPU가 인터넷을 통해 어디서나 디스플레이를 업데이트할 수 있습니다.

    MCU 코드 (Bridge)

    참고: Bridge 스케치에서 display.loop()은 Arduino loop() 내에서 호출되어 디스플레이를 새로 고쳐진 상태로 유지합니다 — 멀티플렉싱된 7세그먼트 디스플레이에 필요하며 Bridge 통신에 영향을 주지 않습니다.

    /* * 이 Arduino UNO Q 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino UNO Q 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-uno-q/arduino-uno-q-74hc595-4-digit-7-segment-display */ #include "Arduino_RouterBridge.h" #include <DIYables_4Digit7Segment_74HC595.h> #define SCLK_PIN 7 #define RCLK_PIN 6 #define DIO_PIN 5 DIYables_4Digit7Segment_74HC595 display(SCLK_PIN, RCLK_PIN, DIO_PIN); String current_value = ""; void display_number(String text) { int number = text.toInt(); current_value = text; display.print(number); Monitor.println("7SEG: " + text); } void display_float(String text) { float value = text.toFloat(); current_value = text; display.print(value, 1); Monitor.println("7SEG float: " + text); } void clear_display() { current_value = ""; display.print(0); Monitor.println("7SEG cleared"); } String get_status() { if (current_value == "") return "Display shows: 0"; return "Display shows: " + current_value; } void setup() { Bridge.begin(); Monitor.begin(9600); display.begin(); display.print(0); Bridge.provide_safe("display_number", display_number); Bridge.provide_safe("display_float", display_float); Bridge.provide_safe("clear_display", clear_display); Bridge.provide("get_status", get_status); } void loop() { display.loop(); // Keep refreshing the 7-segment display }

    Python 코드 (Bridge)

    /* * 이 Arduino UNO Q 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino UNO Q 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-uno-q/arduino-uno-q-74hc595-4-digit-7-segment-display */ from arduino.app_utils import * import time def loop(): result = Bridge.call("display_number", "1234") print(result) time.sleep(3) result = Bridge.call("display_float", "26.5") print(result) time.sleep(3) result = Bridge.call("display_number", "-42") print(result) time.sleep(3) result = Bridge.call("clear_display") print(result) time.sleep(2) result = Bridge.call("get_status") print(result) time.sleep(2) App.run(user_loop=loop)

    빠른 단계

    • 연결: 74HC595 디스플레이를 Arduino UNO Q에 배선하고 USB-C 케이블을 꽂으세요.
    • Arduino App Lab 열기: Arduino App Lab을 시작하고 보드가 감지될 때까지 기다리세요.
    • 새 앱 만들기: Create New App을 클릭하고 DIYables_7Seg74HC595Bridge로 이름을 지정한 후 Create를 클릭합니다.
    • MCU 스케치 붙여넣기: 위의 MCU Bridge 코드를 복사하여 sketch/sketch.ino에 붙여넣으세요.
    • Python 코드 붙여넣기: 위의 Python Bridge 코드를 복사하여 앱의 Python 파일에 붙여넣으세요.
    • 업로드: Arduino App Lab의 Run 버튼을 클릭합니다.
    Arduino UNO Q의 아두이노 app lab에서 run 버튼 클릭

    App Lab 콘솔 출력

    DIYables_Apps
    Stop
    sketch.ino
    1#include "Arduino_RouterBridge.h"
    Serial Monitor
    Python
    Message (Enter to send a message to "Newbiely" on usb(2820070321))
    New Line
    9600 baud
    [2026-04-29 09:00:01] 7SEG: 1234 [2026-04-29 09:00:04] 7SEG float: 26.5 [2026-04-29 09:00:07] 7SEG: -42 [2026-04-29 09:00:09] 7SEG cleared
    DIYables_Apps
    Stop
    sketch.ino
    1#include "Arduino_RouterBridge.h"
    Serial Monitor
    Python
    [2026-04-29 09:00:01] OK [2026-04-29 09:00:04] OK [2026-04-29 09:00:07] OK [2026-04-29 09:00:09] OK [2026-04-29 09:00:11] Display shows: 0

    Telegram

    어디서나 Telegram을 사용하여 74HC595 7세그먼트 디스플레이를 제어하세요. 휴대폰에서 숫자를 보내면 디스플레이가 즉시 업데이트됩니다.

    MCU 스케치: 이전 Bridge 섹션의 동일한 MCU 스케치를 유지하세요.

    Python 코드 (Telegram)

    /* * 이 Arduino UNO Q 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino UNO Q 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-uno-q/arduino-uno-q-74hc595-4-digit-7-segment-display */ from arduino.app_utils import * import requests import time TELEGRAM_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN" CHAT_ID = "YOUR_CHAT_ID" last_update_id = 0 def get_updates(): global last_update_id url = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/getUpdates" params = {"offset": last_update_id + 1, "timeout": 5} try: response = requests.get(url, params=params, timeout=10) data = response.json() if data["ok"]: return data["result"] except Exception: pass return [] def send_message(text): url = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage" requests.post(url, data={"chat_id": CHAT_ID, "text": text}) def loop(): global last_update_id updates = get_updates() for update in updates: last_update_id = update["update_id"] message = update.get("message", {}) text = message.get("text", "") if text.startswith("/number "): number = text[8:].strip() result = Bridge.call("display_number", number) send_message(result) elif text.startswith("/float "): value = text[7:].strip() result = Bridge.call("display_float", value) send_message(result) elif text == "/clear": result = Bridge.call("clear_display") send_message(result) elif text == "/status": result = Bridge.call("get_status") send_message(result) elif text == "/start": send_message("Commands:\n/number <value> - Show integer on display\n/float <value> - Show float on display\n/clear - Clear the display\n/status - Get current display value") App.run(user_loop=loop)

    빠른 단계

    • YOUR_TELEGRAM_BOT_TOKEN을 BotFather에서 가져온 실제 봇 토큰으로 바꾸세요.
    • YOUR_CHAT_ID를 Telegram 채팅 ID로 바꾸세요.
    • 이 Python 코드를 앱의 Python 파일에 붙여넣으세요 (동일한 MCU 스케치 유지).
    • Run 버튼을 클릭합니다. Telegram을 열고 봇에 명령을 보냅니다.

    App Lab 콘솔 출력

    DIYables_Apps
    Stop
    sketch.ino
    1#include "Arduino_RouterBridge.h"
    Serial Monitor
    Python
    [2026-04-29 09:15:00] Waiting for Telegram messages... [2026-04-29 09:15:08] Received: /number 2025 [2026-04-29 09:15:22] Received: /float 23.4 [2026-04-29 09:15:40] Received: /status
    Telegram
    Telegram 12:45
    Welcome to Telegram!
    ArduinoBot 10:19
    Chatting with Arduino...
    telegram-botfather
    BotFather Yesterday
    Your bot has been created.

    ArduinoBot

    bot
    Today
    /number 2025
    10:15 AM ✓✓
    OK
    10:16 AM
    /float 23.4
    10:17 AM ✓✓
    OK
    10:18 AM
    /status
    10:19 AM ✓✓
    Display shows: 23.4
    10:20 AM
    /clear
    10:21 AM ✓✓
    OK
    10:22 AM

    OpenClaw

    You can adapt the OpenClaw to this tutorial by refering the instruction on 아두이노 우노 Q - OpenClaw Tutorial

    프로젝트 아이디어

    Arduino UNO Q에서 74HC595 7세그먼트 디스플레이를 사용하여 많은 유용한 프로젝트를 만들 수 있습니다:

    • 원격 카운터: Telegram을 통해 디스플레이에 카운트 값을 보냅니다 — 생산 카운터 또는 이벤트 집계에 유용합니다
    • 라이브 온도 디스플레이: MCU의 센서에서 온도를 가져와 Bridge를 통해 7세그먼트에 표시합니다
    • 카운트다운 타이머: Python이 Bridge를 통해 시작 값을 전송하고, MCU가 0까지 카운트다운하여 디스플레이에 표시합니다
    • 인터넷 시계: Python이 NTP를 통해 현재 시간을 가져와 HH.MM 형식으로 MCU에 전송하여 표시합니다
    • 점수 디스플레이: Telegram을 사용하여 게임 또는 경쟁을 위한 라이브 점수를 7세그먼트 디스플레이에 업데이트합니다

    자신을 테스트해 보세요

    Arduino UNO Q의 74HC595 7세그먼트 디스플레이를 더 활용할 준비가 되었나요? 다음 도전에 시도해 보세요:

    • 쉬움: MCU 스케치를 수정하여 시작 시 88.88을 디스플레이에 표시합니다 (소수점이 있는 부동소수점 표시 방법 사용).
    • 중간: Bridge를 사용하여 /count <start> <end> Telegram 명령을 구현하면 디스플레이가 <start>에서 <end>까지 1초 간격으로 카운트합니다.
    • 고급: Telegram 제어 스톱워치를 만듭니다: /start는 디스플레이에서 초 단위로 카운트 업을 시작합니다, /stop은 중지합니다, /reset은 0으로 초기화합니다.