Arduino LED 드라이버: 74HC595와 MAX7219 연결·제어 방법
5 분
- Arduino 프로젝트에 LED 드라이버 IC가 필요한 이유
- Arduino LED 드라이버 IC 비교
- 74HC595로 Arduino LED와 매트릭스 제어하기
- MAX7219 LED 매트릭스 모듈 사용하기
- Arduino LED 매트릭스의 전원 요구사항
- Arduino LED 드라이버 문제 해결
- Arduino LED 드라이버 활용 예
- 마무리
- Arduino LED 드라이버 FAQ
LED가 많아지면 Arduino의 GPIO 핀과 전류 용량이 빠르게 부족해집니다. 출력 확장 IC나 전용 LED 드라이버를 사용하면 핀 사용을 줄이고, 경우에 따라 표시 갱신 작업을 하드웨어에 맡길 수 있습니다.
이 글에서는 74HC595 시프트 레지스터와 MAX7219 드라이버의 동작, 배선, 데이지 체인 연결과 제어 방법을 비교합니다.
Arduino 프로젝트에 LED 드라이버 IC가 필요한 이유
Arduino GPIO 핀과 전류의 한계
ATmega328P 기반 Arduino Uno는 LED를 다수 직접 구동할 때 다음 조건을 고려해야 합니다.
- 핀별 전류: Arduino Uno 자료의 디지털 I/O 핀 정격은 20 mA입니다. 원문이 언급한 40 mA는 절대 최대값으로, 연속 동작 목표로 사용하면 안 됩니다.
- 패키지 합계: 원문은 마이크로컨트롤러의 VCC·GND를 통과하는 합계 전류의 한계를 200 mA로 제시합니다. 핀 그룹별 조건도 데이터시트에서 확인해야 합니다.
- 핀 수: Arduino Uno에는 디지털 I/O 핀 14개와 아날로그 입력 핀 6개가 있습니다.
15 mA LED 16개를 동시에 마이크로컨트롤러 핀에서 직접 구동하면 합계 240 mA가 필요합니다. 이는 앞서 제시한 200 mA 조건을 넘으므로 소자 손상 위험이 있습니다. LED 전류는 외부 드라이버와 전원 공급 능력을 기준으로 설계해야 합니다.
소프트웨어 멀티플렉싱과 전용 드라이버
8×8 매트릭스나 7세그먼트 표시기를 구동하는 방법은 크게 다음과 같습니다.
- GPIO 직접 멀티플렉싱: CPU가 행과 열을 계속 스캔합니다. 센서 읽기, 통신, delay() 등으로 갱신이 지연되면 표시가 멈추거나 깜박일 수 있습니다.
- 74HC595 시프트 레지스터: 데이터·클록·래치의 3개 제어선으로 출력을 확장합니다. 행렬 표시의 스캔은 여전히 MCU 소프트웨어가 담당합니다.
- MAX7219 전용 드라이버: 내부 표시 RAM과 스캔 회로가 행·열 갱신을 담당해 MCU의 반복 스캔 부담을 줄입니다.
74HC595와 MAX7219 중 무엇을 선택할까?
- 릴레이, 막대 그래프, 상태 표시등처럼 범용 디지털 출력이 필요하면 74HC595를 검토합니다. LED 전류는 칩의 권장 동작 조건과 전체 패키지 한계를 따릅니다.
- 8×8 LED 매트릭스, 흐르는 글자, 여러 자리의 공통 음극 7세그먼트 표시기에는 전류 설정·스캔·밝기 제어가 내장된 MAX7219가 적합합니다.
Arduino LED 드라이버 IC 비교
범용 출력 확장기와 전용 디스플레이 드라이버의 차이를 정리했습니다. 실제 출력 전류와 연결 가능한 모듈 수는 데이터시트 및 배선 조건을 우선합니다.
| 항목 | 74HC595 시프트 레지스터 | MAX7219 LED 드라이버 |
|---|---|---|
| 역할 | 8비트 직렬 입력·병렬 출력 확장 | 공통 음극 LED 표시 드라이버 |
| 필요한 제어선 | 3개(데이터, 클록, 래치) | 3개(DIN, CS, CLK) |
| LED 수 | 칩당 개별 출력 8개 | 매트릭스 LED 64개 또는 표시 자리 8개 |
| 멀티플렉싱 | MCU 소프트웨어에서 스캔 | 내부 회로에서 자동 스캔(원문 예: 약 800 Hz) |
| 표시 RAM | 없음(출력 래치 레지스터) | 8×8 듀얼 포트 정적 RAM |
| 전류 설정 | 출력별 전류 제한 저항 등 외부 설계 필요 | ISET 외부 저항 하나로 피크 세그먼트 전류 설정 |
| 밝기 제어 | OE 핀의 PWM으로 전체 밝기 조정 가능 | 16단계 디지털 밝기 제어 |
| 연결 확장 | 데이지 체인 가능, 신호·전류 조건에 따라 제한 | 복수 모듈 연결 가능, 속도·전원·배선 조건에 따라 제한 |
74HC595로 Arduino LED와 매트릭스 제어하기
74HC595는 적은 제어 핀으로 출력 수를 늘릴 수 있는 시프트 레지스터입니다.
74HC595 핀 배열
이 IC에는 8비트 시프트 레지스터와 8비트 저장 레지스터가 있습니다. 주요 핀은 다음과 같습니다.
- DS(14번): 직렬 데이터 입력
- SH_CP(11번): 시프트 레지스터 클록, 상승 에지에서 동작
- ST_CP(12번): 저장 레지스터 클록(래치), 병렬 출력 갱신
- OE(13번): 출력 활성화, LOW일 때 동작
- MR(10번): 마스터 리셋, LOW일 때 동작
- Q0~Q7(15번, 1~7번): 병렬 출력
- Q7'(9번): 다음 칩 연결용 직렬 출력

그림: 74HC595 DIP-16 핀 배열
Arduino와 74HC595 두 개로 8×8 LED 매트릭스 배선하기
두 레지스터의 클록과 래치 핀은 Arduino의 같은 제어선에 병렬로 연결하고, 직렬 데이터는 데이지 체인으로 연결합니다. 예시 구성에서는 첫 번째 레지스터가 행의 양극, 두 번째가 직렬 저항을 거친 열의 음극을 제어합니다. 실제 매트릭스 전류가 레지스터 출력 정격을 넘으면 별도 구동 소자가 필요합니다.

그림: 두 개의 74HC595가 행·열을 담당하는 연결 예
shiftOut()으로 74HC595 LED 매트릭스 스캔하기
다음 코드는 두 레지스터에 바이트 두 개를 차례로 전송해 8×8 하트 무늬를 행별로 표시하는 예입니다.
코드의 핵심:
- 데이지 체인 전송: 래치를 LOW로 둔 채 8비트 값 두 개를 연속 전송합니다. 첫 바이트는 두 번째 레지스터(열)에, 다음 바이트는 첫 번째 레지스터(행)에 들어갑니다.
- 행·열 극성: ~pattern으로 열의 음극 구동 비트를 반전하고, 비트 시프트로 현재 행의 출력만 HIGH로 설정합니다.
- 스캔 간격: 행을 순서대로 빠르게 갱신해 깜박임을 줄입니다.
const int latchPin = 10;
const int clockPin = 9;
const int dataPin = 11;
// 8x8 heart pattern representation (1 = active LED, 0 = off LED)
byte heartPattern[8] = {
B00000000,
B01100110,
B11111111,
B11111111,
B11111111,
B01111110,
B00111100,
B00000000
};
// Setup
void setup() {
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
// Main Loop
void loop() {
// Scan through all 8 rows sequentially
for (int row = 0; row < 8; row++) {
// Columns (active LOW): Invert the pattern so that 1s are driven LOW (sinking current)
byte colData = ~heartPattern[row];
// Rows (active HIGH): Turn on only the current row (e.g. Row 0 -> B00000001, Row 1 -> B00000010)
byte rowData = (1 << row);
// Ground the latch pin and hold it LOW as long as we are transmitting data
digitalWrite(latchPin, LOW);
// 1. Shift out column data first (this byte overflows into Register 2, controlling Columns)
shiftOut(dataPin, clockPin, MSBFIRST, colData);
// 2. Shift out row data second (this byte stays in Register 1, controlling Rows)
shiftOut(dataPin, clockPin, MSBFIRST, rowData);
// Return the latch pin HIGH to output the updated states simultaneously
digitalWrite(latchPin, HIGH);
// Delay interval per scan line (1.25 ms per row achieves ~100 Hz frame refresh rate)
delayMicroseconds(1250);
}
}
shiftOut()은 사용하기 쉽지만 CPU가 클록과 데이터 핀을 직접 바꿔야 합니다. 표시 갱신 요구가 높으면 ATmega328P의 하드웨어 SPI를 검토할 수 있습니다. 원문은 최대 8 MHz 전송을 예로 듭니다.
74HC595 여러 개 데이지 체인으로 연결하기
출력 8개보다 더 필요하면 첫 번째 칩의 Q7'(9번)을 두 번째 칩의 DS(14번)에 연결합니다. 두 칩의 SH_CP와 ST_CP는 같은 Arduino 선에 병렬로 연결합니다.
16비트를 보내면 먼저 전송한 8비트가 두 번째 칩으로 이동합니다. 따라서 MSBFIRST로 전송할 때는 두 번째 레지스터용 바이트를 먼저 보내야 합니다.
OE 핀의 PWM으로 전체 밝기 제어하기
74HC595의 OE 핀을 GND에 고정하지 않고 D3 또는 D9 같은 PWM 핀에 연결하면 전체 출력을 PWM으로 제어할 수 있습니다. OE는 LOW 활성화이므로 analogWrite(OEPin, brightnessValue)에서 값 0은 밝게 켜진 상태, 255는 꺼진 상태에 해당합니다. LED 전류 한계는 별도로 확인해야 합니다.
MAX7219 LED 매트릭스 모듈 사용하기
브레드보드에서 IC를 직접 연결해 원리를 배울 수 있지만, 실제 제작에서는 MAX7219와 디커플링 커패시터, 매트릭스 소켓이 이미 실장된 MAX7219 8×8 LED 매트릭스 모듈을 이용할 수 있습니다.
MAX7219 8×8 매트릭스의 동작 원리
MAX7219에는 8×8 듀얼 포트 정적 RAM과 하드웨어 스캔 회로가 있습니다. Arduino가 직렬 인터페이스로 픽셀 데이터를 보내면 모듈이 저장하고 계속 갱신합니다. 원문은 내부 갱신 속도를 약 800 Hz로 설명합니다. 따라서 MCU가 각 행을 소프트웨어로 계속 스캔할 필요가 없습니다.
MAX7219 모듈의 핀과 연결
일반적인 모듈은 입력과 출력 쪽에 5핀 헤더를 제공합니다. 실제 핀 배치는 모듈마다 확인하세요.

그림: 왼쪽 입력 헤더와 오른쪽 출력 헤더를 갖춘 MAX7219 모듈
- VCC: 일반적으로 +5 V DC 전원
- GND: 공통 접지
- DIN: MCU의 MOSI 측 직렬 데이터 입력
- CS(LOAD): LOW에서 전송을 시작하고 HIGH에서 데이터를 래치
- CLK: 직렬 데이터 클록. 원문은 최대 10 MHz를 제시합니다.
- DOUT: 다음 모듈로 이어지는 직렬 데이터 출력
ISET 전류 설정 저항
MAX7219 칩의 LED 세그먼트 피크 전류는 ISET 핀의 외부 저항(R_iset)으로 설정합니다.
시판 8×8 모듈에는 대개 이 저항이 기판에 실장되어 있으며, 원문은 약 10 kΩ을 예로 듭니다. 제조사 데이터시트는 약 9.53 kΩ에서 피크 세그먼트 전류가 약 40 mA가 될 수 있다고 설명합니다. 40 mA를 모든 LED의 안전한 구동값으로 가정하지 말고 실제 LED 정격, 모듈 저항값과 밝기 설정을 확인해야 합니다.

그림: Arduino Uno와 MAX7219 매트릭스 모듈의 배선 예
MAX7219 제어 레지스터
모듈에는 8비트 주소와 8비트 데이터로 이루어진 16비트 패킷을 보냅니다.
명령 = [주소(D15-D8)] + [데이터(D7-D0)]
주요 레지스터는 다음과 같습니다.
| 주소(16진수) | 레지스터 | 역할과 대표 설정 |
|---|---|---|
| 0x09 | Decode Mode | 8×8 원시 매트릭스 매핑은 0x00, 7세그먼트 모드는 0x0F/0xFF 예시 |
| 0x0A | Intensity | 0x00 최소부터 0x0F 최대까지 16단계 밝기(최대 15/16 듀티) |
| 0x0B | Scan Limit | 전체 8행·열 사용 시 0x07 |
| 0x0C | Shutdown | 0x00 대기, 0x01 동작 |
| 0x0F | Display Test | 0x00 일반 동작, 0x01 모든 LED 테스트 |
| 0x01~0x08 | Digit 0~7 | 8×8 매트릭스의 열 1~8에 대응 |
Arduino 라이브러리와 저수준 제어
SPI.h로 레지스터를 직접 제어하면 동작을 이해하기 좋지만, 그래픽과 흐르는 글자를 처음부터 구현하기에는 코드가 많아집니다. 다음 라이브러리를 검토할 수 있습니다.
- LedControl: 개별 모듈이나 짧은 체인에서 setLed()로 좌표별 LED를 켜고 문자 등을 표시할 수 있습니다.
- MD_MAX72XX와 MD_Parola: FC-16 등 모듈 배치 차이, 여러 모듈의 글자 버퍼·글꼴·애니메이션·표시 구역 설정을 지원합니다.
예: 하드웨어 SPI를 이용한 저수준 제어
다음 코드는 Arduino의 SPI.h를 통해 MAX7219 레지스터에 데이터를 쓰는 개념 예시입니다.
// Pin Definitions
// Includes and Definitions
#include <SPI.h>
const int csPin = 10;
// MAX7219 Register Addresses
const byte REG_NOOP = 0x00;
const byte REG_DIGIT0 = 0x01;
const byte REG_DECODE_MODE = 0x09;
const byte REG_INTENSITY = 0x0A;
const byte REG_SCAN_LIMIT = 0x0B;
const byte REG_SHUTDOWN = 0x0C;
const byte REG_DISPLAY_TEST = 0x0F;
// Display Pattern Buffer
byte heartPattern[8] = {
B00000000,
B01100110,
B11111111,
B11111111,
B11111111,
B01111110,
B00111100,
B00000000
};
// Helper Function to Write to Register
void writeRegister(byte address, byte data) {
digitalWrite(csPin, LOW);
SPI.transfer(address);
SPI.transfer(data);
digitalWrite(csPin, HIGH);
}
// Setup Function
void setup() {
pinMode(csPin, OUTPUT);
digitalWrite(csPin, HIGH);
SPI.begin();
SPI.beginTransaction(SPISettings(8000000, MSBFIRST, SPI_MODE0));
writeRegister(REG_DISPLAY_TEST, 0x00);
writeRegister(REG_DECODE_MODE, 0x00);
writeRegister(REG_INTENSITY, 0x03);
writeRegister(REG_SCAN_LIMIT, 0x07);
writeRegister(REG_SHUTDOWN, 0x01);
for (int i = 1; i <= 8; i++) {
writeRegister(i, 0x00);
}
}
// Main Loop
void loop() {
for (int col = 0; col < 8; col++) {
writeRegister(REG_DIGIT0 + col, heartPattern[col]);
}
delay(1000);
}
MAX7219 8×8 모듈 여러 개 연결하기
모듈을 나란히 두고 VCC, GND, CLK, CS를 공통으로 연결합니다. 데이터는 앞 모듈의 출력 헤더 DOUT을 다음 모듈의 입력 헤더 DIN에 연결합니다.
MD_Parola 같은 라이브러리에서는 연결 모듈 수를 설정합니다. 예를 들어 #define MAX_DEVICES 4를 사용하면 라이브러리가 체인 데이터를 관리해 여러 모듈에 걸친 흐르는 글자를 표시할 수 있습니다.
Arduino LED 매트릭스의 전원 요구사항
모듈 하나는 조건에 따라 Arduino의 5 V 전원에서 동작할 수 있지만 여러 개를 연결하면 USB 및 보드의 전원 예산을 확인해야 합니다.
- USB 2.0의 일반적 전류 예산: 원문은 표준 포트의 500 mA를 기준으로 설명합니다. 실제 공급 가능 전류는 포트와 장치 상태에 따라 확인해야 합니다.
- 4개 모듈: 8×32 표시기를 높은 밝기와 높은 점등 밀도로 구동하면 원문 기준 약 600 mA~1 A가 필요할 수 있습니다.
- 외부 전원: 원문은 정격 5 V·최소 2 A의 안정화 전원을 모듈의 VCC·GND에 직접 연결하도록 권합니다. 외부 전원 GND와 Arduino GND도 반드시 연결해 공통 기준을 만듭니다.
Arduino LED 드라이버 문제 해결
1. 74HC595 출력이 바뀌지 않을 때
래치(ST_CP) 배선을 확인합니다. 연결이 끊기거나 GND에 고정되면 직렬 데이터를 받아도 병렬 출력에 새 값이 반영되지 않습니다.
2. 데이지 체인 LED 순서가 뒤바뀔 때
먼저 전송한 바이트가 다음 레지스터로 이동합니다. shiftOut() 호출 순서를 바꾸고 두 칩의 데이터 연결을 확인합니다.
3. MAX7219에 글자가 표시되지 않을 때
MAX7219는 전원 인가 뒤 Shutdown 상태일 수 있습니다. Shutdown 레지스터(0x0C)에 0x01을 쓰고 Scan Limit(0x0B)을 0x07로 설정해 8행을 활성화했는지 확인합니다.
4. 매트릭스가 어둡거나 밝기가 고르지 않을 때
가는 점퍼선을 따라 모듈 전원을 계속 이어 연결하면 전압 강하가 생길 수 있습니다. 5 V 전원에서 각 모듈까지 충분한 굵기의 전원선을 연결하고 전원 용량을 확인합니다.
5. 표시가 깜박일 때
외부 어댑터를 쓴다면 어댑터의 음극과 Arduino GND가 연결되어 있는지 확인합니다. 소프트웨어 스캔 방식이라면 긴 delay()나 다른 작업으로 갱신이 지연되지 않는지도 살펴봅니다.
6. 전원을 켤 때 LED가 잠깐 켜질 때
74HC595의 출력 상태는 초기화 전에 예측하기 어렵습니다. 원문은 OE 핀과 VCC 사이에 10 kΩ 풀업 저항을 두어 시작 시 출력을 비활성화하고, Arduino의 setup()이 끝난 뒤 OE를 LOW로 내려 활성화하는 방법을 제안합니다.
Arduino LED 드라이버 활용 예
8×32 MAX7219 흐르는 글자 표시기
8×8 모듈 네 개를 데이지 체인으로 연결하고 MD_Parola를 사용하면 8×32 크기의 흐르는 글자 표시기를 만들 수 있습니다.

그림: 데이지 체인으로 연결한 8×8 LED 매트릭스 모듈 네 개
74HC595로 만드는 LED 막대 그래프
74HC595 세 개를 연결하면 출력 24개로 오디오 레벨 표시기나 배터리 잔량 표시기를 구성할 수 있습니다. 밝기와 구동 전류가 중요하다면 레지스터의 출력 정격에 맞는 별도 드라이버를 검토해야 합니다.
Arduino 7세그먼트 표시기의 멀티플렉싱
숫자 표시에는 a~g의 일곱 세그먼트와 선택적인 소수점(dp)을 사용합니다. 원문의 4자리 패키지 예에서는 세그먼트용 8핀과 자리 선택용 공통 양극 또는 공통 음극 4핀, 합계 12핀을 사용합니다.
74HC595나 MAX7219를 사용하면 GPIO 사용량과 갱신 코드의 부담을 줄일 수 있습니다. 4자리 숫자 표시에서 개별 LED를 모두 직접 연결하면 32개 핀이 필요할 수 있지만, 멀티플렉싱은 공통 핀 네 개를 순서대로 선택하면서 해당 세그먼트 데이터를 보냅니다. 충분히 빨리 스캔하면 연속된 숫자로 보입니다.
마무리
Arduino에서 더 많은 LED를 제어하려면 GPIO 수와 전류, 밝기, CPU 부하를 함께 고려해야 합니다. 직접 행렬 스캔, 74HC595 출력 확장, 찰리플렉싱, MAX7219 드라이버는 서로 다른 제약을 해결하는 방법입니다. 특히 LED 전류가 소자 정격을 넘지 않도록 회로와 전원을 검증해야 합니다.
Arduino LED 드라이버 FAQ
Q. 74HC595 한 개로 LED 몇 개를 제어할 수 있나요?
병렬 출력이 8개이므로 개별 LED 최대 8개의 논리 상태를 제어할 수 있습니다. 여러 칩을 데이지 체인으로 연결하면 출력 수를 늘릴 수 있지만 전류, 신호 지연과 전원 용량에는 제한이 있습니다.
Q. MAX7219 모듈은 몇 개까지 연결할 수 있나요?
원문은 일반적인 하드웨어 SPI 구성에서 8개 이상을 예로 듭니다. 고정된 보편적 상한은 아니며 배선 길이, 클록 속도, 전원 분배, 모듈 설계에 따라 달라집니다.
Q. MAX7219에 직접 멀티플렉싱 코드를 작성해야 하나요?
필요하지 않습니다. 칩의 하드웨어 스캔 회로가 매트릭스를 계속 갱신하므로 Arduino는 표시할 데이터를 보내면 됩니다.
Q. 시작할 때 74HC595 출력이 임의 상태인 이유는 무엇인가요?
전원 인가 직후 레지스터 내용이 초기화되기 전일 수 있습니다. OE 핀에 10 kΩ 풀업을 두어 출력을 비활성화하고 설정을 마친 뒤 활성화하는 방법을 검토할 수 있습니다.
Q. 74HC595로 고전력 LED를 직접 구동할 수 있나요?
권장하지 않습니다. 원문에 제시된 35 mA는 일부 74HC595 부품의 절대 최대 출력 전류이며 권장 연속 동작 전류가 아닙니다. 고전력 LED에는 트랜지스터 드라이버나 달링턴 어레이 등 별도 전력 구동 회로를 사용합니다.
Q. 74HC595와 MAX7219 중 어느 쪽이 적합한가요?
범용 출력 확장에는 74HC595, 공통 음극 7세그먼트나 8×8 LED 매트릭스의 스캔·밝기 제어에는 MAX7219가 보통 편리합니다. 요구 전류와 표시 구조를 먼저 확인하세요.
Q. LED 매트릭스가 깜박이는 이유는 무엇인가요?
외부 전원과 Arduino의 접지가 연결되지 않았거나, 소프트웨어 스캔 갱신이 느린 작업 때문에 지연되는 경우를 확인하세요. 전원 전압 강하도 함께 점검해야 합니다.
Q. MAX7219 모듈에 외부 저항이 필요한가요?
일반적인 8×8 모듈에는 ISET 전류 설정 저항이 실장되어 있는 경우가 많아 열마다 별도 직렬 저항이 필요하지 않습니다. 모듈마다 구성이 다를 수 있으므로 실물 회로와 LED 전류 정격을 확인해야 합니다.
지속적인 성장
ESP32와 Raspberry Pi 비교: IoT·로봇·엣지 AI 선택 가이드
배터리로 구동하는 스마트 농업 센서와 영상 기반 산업 검사 카메라는 모두 IoT 장치이지만, 필요한 하드웨어는 크게 다릅니다. ESP32와 Raspberry Pi를 같은 종류의 보드처럼 비교하기보다 마이크로컨트롤러(MCU)와 단일 보드 컴퓨터(SBC)의 역할 차이부터 살펴봐야 합니다. ESP32는 저전력 센서와 실시간 제어에, Raspberry Pi는 Linux 기반 멀티태스킹과 비교적 무거운 엣지 연산에 적합합니다. 이 글에서는 성능·소비 전력·IoT·로봇·TinyML·엣지 AI·PCB 설계 관점에서 두 플랫폼을 비교합니다. MCU와 SBC의 구조적 차이 ESP32와 Raspberry Pi의 성능 및 소비 전력 IoT·로봇에서의 선택 기준 ESP32의 TinyML과 Raspberry Pi의 엣지 AI 두 플랫폼을 함께 쓰는 하이브리드 구조 ESP32 모듈과 Raspberry Pi 캐리어 보드의 PCB 설계 그림: ESP32-S3와 Raspberry Pi 5의 주요 구성 비교. ESP32 vs......
Arduino LED 드라이버: 74HC595와 MAX7219 연결·제어 방법
LED가 많아지면 Arduino의 GPIO 핀과 전류 용량이 빠르게 부족해집니다. 출력 확장 IC나 전용 LED 드라이버를 사용하면 핀 사용을 줄이고, 경우에 따라 표시 갱신 작업을 하드웨어에 맡길 수 있습니다. 이 글에서는 74HC595 시프트 레지스터와 MAX7219 드라이버의 동작, 배선, 데이지 체인 연결과 제어 방법을 비교합니다. Arduino 프로젝트에 LED 드라이버 IC가 필요한 이유 Arduino GPIO 핀과 전류의 한계 ATmega328P 기반 Arduino Uno는 LED를 다수 직접 구동할 때 다음 조건을 고려해야 합니다. 핀별 전류: Arduino Uno 자료의 디지털 I/O 핀 정격은 20 mA입니다. 원문이 언급한 40 mA는 절대 최대값으로, 연속 동작 목표로 사용하면 안 됩니다. 패키지 합계: 원문은 마이크로컨트롤러의 VCC·GND를 통과하는 합계 전류의 한계를 200 mA로 제시합니다. 핀 그룹별 조건도 데이터시트에서 확인해야 합니다. 핀 수: Arduino ......
연산 증폭기 기호 읽는 법: 반전·비반전 입력과 741 핀 배열
아날로그 회로도에서 연산 증폭기(op amp)는 입력 두 개와 출력 한 개가 있는 삼각형으로 자주 표시됩니다. 증폭 회로를 설계하려면 반전 입력과 비반전 입력을 구분하고, 전원 핀이 어디에 연결되는지 읽을 수 있어야 합니다. 기본 연산 증폭기 기호에는 비반전 입력, 반전 입력, 출력이 표시됩니다. 전원 연결은 회로도 작성 방식에 따라 기호 안에 보이거나 생략될 수 있습니다. 이 글에서 살펴볼 내용 연산 증폭기 기호의 각 부분이 뜻하는 것 입력에 붙은 +와 − 표시의 의미 전원 핀이 표시되거나 숨겨지는 이유 전압 팔로어, 반전 증폭기, 비교기 회로 구분법 연산 증폭기와 비교기의 기호 비교 741의 회로도 기호와 실제 DIP-8 핀 번호 대응 회로도 기호와 PCB 풋프린트 연결 방법 연산 증폭기 기호란? 연산 증폭기 기호는 이득이 큰 차동 증폭기를 나타냅니다. 일반적으로 왼쪽의 평평한 변에 입력이 두 개 있고, 오른쪽 삼각형 꼭짓점에 출력이 있습니다. 기호의 방향은 회로도에서 신호 흐름을 읽는 데......
ESP32-S3 개발 보드 설계 방법: 회로도부터 PCB 제작까지
맞춤형 ESP32-S3 개발 보드를 설계하면 하드웨어 구성을 프로젝트에 맞게 조정할 수 있습니다. 기성 보드 대신 필요한 GPIO만 외부로 빼고, 주변 회로를 한 기판에 통합하며, 양산을 고려한 크기와 배치를 정할 수 있습니다. 이 튜토리얼에서는 4층 ESP32-S3 개발 보드를 처음부터 설계합니다. 회로도 구성, 4층 적층 계획, 배선 원칙, 제조 파일 준비를 거쳐 JLCPCB의 PCB 제작·조립 과정까지 살펴봅니다. 완성된 보드의 구성은 다음과 같습니다. ESP32-S3-WROOM 모듈(Wi-Fi 및 Bluetooth LE 5.0) 일반적인 프로그래밍과 디버깅을 위한 CP2102 USB-UART 인터페이스 USB 애플리케이션을 위한 원생 USB OTG Type-C 커넥터 버튼을 누르지 않고 다운로드 모드로 진입하는 자동 부팅·다운로드 회로 방열과 노이즈 필터링을 고려한 AMS1117-3.3 V 레귤레이터 수동 제어용 Reset·Boot 택트 버튼 전원 표시 및 GPIO2 사용자 제어용 상태......
스위치 회로 기호 읽는 법: SPST·SPDT·NO·NC 비교
스위치는 회로의 전류 경로를 열거나 닫는 부품입니다. 접점이 닫히면 전류가 흐르고, 열리면 경로가 끊깁니다. 회로도에서 스위치 기호를 읽을 수 있으면 기기가 어떻게 켜지고, 신호 경로를 바꾸며, 특정 동작을 시작하는지 파악하기 쉽습니다. 고장 진단에도 도움이 됩니다. 이 글에서 다루는 내용 1. 회로도에서 스위치 기호가 뜻하는 것 2. SPST, SPDT, DPDT 스위치 기호의 차이 3. 평상시 열림(NO)과 평상시 닫힘(NC) 4. 스위치 기호 읽는 순서 5. 실제 회로 예시 6. PCB 설계에 스위치 기호 적용하기 그림: 회로도에 표시된 스위치 기호와 PCB에 실장된 실제 스위치의 관계. 스위치 종류와 회로 기호 회로도에서 자주 보는 스위치 기호는 다음과 같습니다. SPST(Single Pole Single Throw): 하나의 경로를 켜거나 끄는 가장 단순한 방식 SPDT(Single Pole Double Throw): 두 경로 중 하나를 선택하는 방식 DPDT(Double Pole D......
다이오드 전압 강하란? 종류별 순방향 전압·계산·측정 방법`
다이오드에 전류가 흐르면 양단에 전압이 걸립니다. 이 다이오드 전압 강하는 부하에 도달하는 전압과 소자에서 발생하는 열을 결정합니다. 전원 전압이 낮은 회로에서는 부하가 정상 동작할 수 있는지도 좌우합니다. 이 글에서는 다이오드 종류별 순방향 전압, 계산식, 전압 강하에 영향을 주는 요인, 멀티미터 측정 방법과 실제 회로 설계에서의 의미를 살펴봅니다. 다이오드 전압 강하란? 다이오드 전압 강하는 애노드에서 캐소드로 전류가 흐를 때 다이오드 양단에 나타나는 순방향 전압(Vf)입니다. 순방향 전압 강하라고도 합니다. 순방향 전압(Vf)은 다이오드가 순방향 바이어스 상태로 도통할 때 측정되는 전압입니다. 전류는 애노드로 들어가 캐소드로 나갑니다. 접합부에 형성되는 전압의 크기는 전류, 온도, 다이오드 구조에 따라 달라집니다. 이상적인 다이오드는 전압 강하가 0V인 완전한 스위치로 취급합니다. 반면 실제 다이오드에는 도통 시 전압 강하가 발생하며, 그만큼의 전력이 열로 소모되어 부하에 전달되지 않습니......
