[아두이노] RGB LED 핀 구별법: 공통 단자(Common) 완벽 정리

이미지
DIY 프로젝트나 회로 설계에서 자주 사용되는 4핀 RGB LED 는 처음 보면 핀 구별이 어렵게 느껴질 수 있습니다. 하지만 몇 가지 핵심 포인트만 알면 빠르고 정확하게 판별할 수 있습니다. 1️⃣ 외형으로 구별하기 (핀 길이 + 내부 구조) 가장 직관적인 방법은 핀 길이와 내부 금속 구조 를 확인하는 것입니다. 가장 긴 다리 → 이 핀이 바로 공통 단자 (Common) 입니다. 내부 금속판 (컵 형태) → LED 내부를 보면 특정 금속판이 유독 넓은데, 이 부분이 가장 긴 다리와 연결된 공통 단자 입니다. 핀 배열 (일반적인 형태) → 가장 긴 핀을 왼쪽에서 두 번째에 두었을 때 👉 Red - Common - Green - Blue 순서가 일반적입니다. ⚠️ 단, 제조사에 따라 다를 수 있으니 참고용으로만 활용하세요. 2️⃣ 구동 방식에 따른 분류 (Anode vs Cathode) RGB LED는 공통 단자의 극성에 따라 두 가지 타입으로 나뉩니다. 구분 Common Cathode Common Anode 공통 단자 GND (-) VCC (+) 제어 방식 HIGH(1) → 점등 LOW(0) → 점등 특징 아두이노 등에서 많이 사용 일부 드라이버 회로에서 사용 👉 핵심은 긴 다리가 +인지 -인지 입니다. 이것에 따라 회로 구성 방식이 완전히 달라집니다. 3️⃣ 멀티미터로 10초 만에 확인하는 방법 데이터시트가 없을 때 가장 확실한 방법입니다. 멀티미터를 다이오드 모드 로 설정 검정색 리드선(COM) 을 가장 긴 다리에 연결 빨간색 리드선 을 나머지 핀에 하나씩 접촉 💡 LED가 켜진다면 → Common Cathode (GND 공통) ❌ LED가 안 켜진다면 → 리드를 반대로 연결해서 다시 테스트 💡 그때 켜진다면 → Common Anode (VCC 공통) ⚠️ 설계 시 주의사항 (Engineering Tip) ✔ 전류 제한 저항은 필수 RGB LED는 색상마다 특성이 다릅니다. Red: 약 2.0V Green / Blue: 약 3.0 ~ 3.2V 따...

[아두이노] 스위치 노이즈, 디바운싱(Debouncing) 가이드

스위치를 한 번 눌렀는데 LED가 켜졌다가 바로 꺼지거나, 혹은 아예 반응하지 않는 경험. 처음엔 “내 코드가 잘못됐나?” 싶지만, 사실 문제는 코드가 아니라 물리 세계 에 있습니다. 버튼은 우리가 생각하는 것처럼 “딱 한 번” 눌리지 않습니다. 접점이 닿는 순간, 내부에서는 금속이 튕기며 수십 번 ON/OFF를 반복 합니다. 인간에게는 한 번의 클릭이지만, 마이크로컨트롤러에게는 이게 하나의 신호가 아니라 노이즈 덩어리 로 보입니다. 이 현상을 바운싱(Bouncing) 이라고 하고, 이를 해결하는 기술이 바로 디바운싱(Debouncing) 입니다. 🔧 해결의 핵심: “잠깐 기다렸다가 다시 보자” 디바운싱의 핵심 아이디어는 단순합니다. “변화가 감지되면, 바로 믿지 말고 잠깐 기다렸다가 다시 확인하자.” 접점이 안정되는 데 걸리는 시간은 보통 몇 ms 수준입니다. 그래서 약 5ms 정도 지연 후 다시 읽으면 , 훨씬 신뢰할 수 있는 값을 얻을 수 있습니다. 🧠 함수로 만드는 이유 이 로직을 loop() 안에 직접 써도 되지만, 그렇게 하면 코드가 점점 지저분해집니다. 그래서 우리는 이 동작을 함수로 캡슐화 합니다. 💻 전체 코드 (생략 없음) const int LED = 9 ; // LED를 9번 핀에 연결 const int BUTTON = 2 ; // 버튼을 2번 핀에 연결 boolean lastButton = LOW ; // 이전 버튼 상태 저장 변수 boolean currentButton = LOW ; // 현재 버튼 상태 저장 변수 boolean ledOn = false ; // LED의 현재 상태 (ON/OFF) void setup () { pinMode ( LED , OUTPUT ); pinMode ( BUTTON , INPUT ); // 입력 모드 설정 (풀다운 저항 필요) } /* * 디바운싱 함수 (Debouncing Function) ...

[아두이노] 전류는 떠나도 전압은 남는다? 풀다운 회로의 미묘한 삼각관계

1. 흔한 오해: "전류가 가야 전압도 가는 거 아닌가요?" 스위치를 누르면 5V 전원에서 전류가 흐르기 시작합니다. 이때 전류가 갈 수 있는 길은 두 갈래입니다. 아두이노 입력 핀: 내부 저항이 약 100MΩ 인 사실상 막힌 길 풀다운 저항: 10kΩ 의 비교적 낮은 저항 경로 당연히 전류는 저항이 훨씬 작은 풀다운 저항 쪽으로 거의 모두 흐르게 됩니다. 여기서 자연스럽게 이런 의문이 생깁니다. “전류가 풀다운 저항으로 다 가버리면, 입력 핀에는 아무것도 안 남는 거 아닌가?” 2. 핵심은 ‘전압의 위치’ (Potential Energy) 이 현상을 이해하려면 전압을 에너지의 높이(위치 에너지) 로 생각하는 것이 핵심입니다. 5V 전원 → ‘압력 5’를 만들어내는 펌프 스위치를 닫는 순간 → 그 압력이 입력 핀이 연결된 지점까지 그대로 전달 중요한 포인트는 이것입니다. 전류가 어디로 흐르느냐와, 그 지점의 전압이 얼마냐는 별개의 문제입니다. 전류는 풀다운 저항(하수구)을 통해 GND로 빠져나가고 있지만, 그 하수구 입구(접점)의 압력은 여전히 5V 입니다. 아두이노 입력 핀은 물을 소비하는 장치가 아니라, 그 지점의 상태를 읽는 **‘압력계’**입니다. 그 지점이 5V → HIGH 그 지점이 0V → LOW 전류가 옆으로 빠져나가든 말든, 핀은 자신이 연결된 지점의 전압만 보고 판단합니다. 3. 왜 전압이 깎이지 않고 유지될까? 전압이 줄어들기 위해서는 전압 강하를 일으킬 요소(저항) 가 전원과 핀 사이에 존재해야 합니다. 하지만 현재 구조를 보면: 5V 전원 → 스위치 → 입력 핀 이 경로에는 거의 저항이 없음 즉, 전압을 떨어뜨릴 ‘소모 구간’이 존재하지 않습니다. 전압이 실제로 소비되는 구간은 어디일까요? 입력 핀 이후 즉, 풀다운 저항을 통과하는 구간 전류는 이 저항을 지나면서 에너지를 소모하고 결국 GND(0V)에 도달하게 됩니다. 정리하면: 핀 위치: 에너지가 아직 소비되지 않은 상태 (5V 유지) 풀다운 저항: 에너지가 실제로 ...

[아두이노] PWM은 만능일까? 가짜 아날로그가 통하는 곳과 안 통하는 곳

1. PWM, 어디까지 써봤니? 우리는 아두이노의 analogWrite() 를 통해 LED 밝기를 조절하며 PWM의 편리함을 맛보았습니다. 하지만 엔지니어라면 항상 질문을 던져야 합니다. "이 '가짜 아날로그' 신호를 모든 곳에 아날로그 대신 써도 될까?" 답은 "아니오"입니다. 2. PWM과 찰떡궁합: "둔감한" 하드웨어들 PWM의 거친 ON/OFF 신호를 부드럽게 받아주는 장치들이 있습니다. 이들의 공통점은 **'관성'**이나 '잔상' 같은 물리적 필터 기능을 내장하고 있다는 점입니다. LED (시각적 관성): 인간의 눈은 초당 490번의 깜빡임을 보지 못하고 평균 밝기로 인식합니다. DC 모터 (물리적 관성): 모터 내부의 코일(인덕터)과 회전체의 무게 덕분에, 전기가 끊겨도 즉시 멈추지 않고 부드럽게 회전 속도를 유지합니다. PWM은 모터 속도 제어의 '치트키'와 같습니다. 3. PWM이 힘을 못 쓰는 곳: "예민한" 하드웨어들 반면, 신호의 변화를 실시간으로 출력해야 하는 장치들에서는 PWM의 거친 사각형 파형이 치명적인 독이 됩니다. 스피커와 오디오 장치: 스피커의 진동판은 전압 변화에 즉각 반응합니다. 여기에 PWM 신호를 그대로 넣으면, 우리가 원하는 소리 대신 **"삐-" 하는 고주파 소음(스위칭 노이즈)**이 섞여 들립니다. 정밀 측정 센서: 아주 미세한 전압 변화를 읽어야 하는 센서에 PWM 전원을 공급하면, 데이터 값이 0과 5 사이를 널뛰며 엉망이 됩니다. 4. 해결책: 거친 녀석을 부드럽게 만드는 '필터' 만약 스피커에서 PWM으로 소리를 내야 한다면 어떻게 해야 할까요? 문장에서 언급된 **'외부 회로'**가 필요합니다. 가장 대표적인 것이 **저항(R)과 커패시터(C)를 이용한 Low-Pass Filter(저역 통과 필터)**입니다. 이 회로를 통과...

[아두이노] LED는 즉시 반응하는데 왜 밝기 조절이 될까?

PWM, 인간의 눈, 그리고 모터와의 결정적인 차이 1. 처음 보면 이상한 현상 아두이노에서 PWM으로 LED를 제어하면 이렇게 보입니다. 10% Duty → 어둡게 50% Duty → 중간 밝기 100% Duty → 밝게 그래서 자연스럽게 이렇게 생각하게 됩니다. “전압이 조금씩 줄어들면서 LED 밝기가 변하는구나” 하지만 이건 완전히 틀린 해석 입니다. 2. LED의 실제 동작은 매우 단순하다 LED는 물리적으로 이렇게 동작합니다. 전류 흐름 → 즉시 켜짐 전류 차단 → 즉시 꺼짐 즉, PWM이 들어오면 실제로는: 켜짐 → 꺼짐 → 켜짐 → 꺼짐 → ... (초당 약 490번 반복) 👉 LED는 절대 “중간 밝기 상태”로 존재하지 않습니다. 3. 그럼 밝기 조절은 왜 보일까? 정답은 LED가 아니라 우리 눈 에 있습니다. 👁️ 4. 인간의 눈은 빠른 변화를 평균으로 처리한다 사람의 시각 시스템은 이런 특징이 있습니다. 너무 빠른 깜빡임은 하나의 연속된 밝기로 인식한다 이를 잔상 효과 (Persistence of Vision) 라고 합니다. ⏱ 속도 비교 인간 인식 한계: 약 50~60Hz 아두이노 PWM: 약 490Hz 👉 이미 “깜빡임을 못 느끼는 영역” 5. 그래서 실제로는 이런 일이 일어난다 PWM 25%라면: 실제 LED: 25% 시간 → 완전히 켜짐 75% 시간 → 완전히 꺼짐 인간의 눈: 평균 밝기로 인식 수식으로 표현하면 Brightness ∝ D \text{Brightness} \propto D 6. 핵심 착각 ❌ 잘못된 이해 LED가 약하게 켜진다 ⭕ 실제 LED는 항상 “풀파워 ON/OFF”만 한다 ⚙️ 7. 그런데 모터는 완전히 다르다 여기서 중요한 차이가 등장합니다. 🔴 LED vs ⚙️ 모터 항목 LED 모터 반응 속도 즉시 느림 에너지 저장 없음 있음 PWM 해석 눈이 평균 ...

[아두이노] 아두이노 PWM의 진짜 구조

“코드가 아니라 하드웨어가 만든다” 1. PWM은 소프트웨어가 아니라 “하드웨어 기능”이다 많은 사람들이 PWM을 이렇게 오해합니다: “analogWrite()가 빠르게 ON/OFF를 반복한다” 하지만 실제 구조는 완전히 다릅니다. 아두이노 UNO 기준으로 PWM은: CPU(코드 실행) Timer(하드웨어) 출력 핀 회로 이 3가지가 분리된 구조입니다. 🔧 핵심 구조 PWM 출력은 CPU가 직접 만드는 게 아니라: Timer(하드웨어 타이머)가 자동으로 생성 합니다. 2. PWM 내부 동작 (하드웨어 레벨) 예를 들어 analogWrite(9, 64) 를 실행하면: ① CPU가 하는 일 “9번 핀 PWM 모드로 설정” “듀티 사이클 = 64/255” 값을 레지스터에 기록 ② Timer가 하는 일 (핵심) Timer는 내부에서 계속 반복합니다: 카운터 증가 특정 값 도달하면 HIGH 비교값 도달하면 LOW 다시 초기화 이 과정이 초당 약: f = 490 H z ⇒ T ≈ 2.04 m s f = 490Hz \Rightarrow T \approx 2.04ms 로 반복됩니다. 3. PWM은 “계속 도는 기계”다 핵심은 이것입니다: PWM은 코드가 아니라 독립적인 하드웨어 루프 즉: 한 번 설정하면 CPU 없이도 계속 동작 💡 직관적 비유 PWM은 이렇게 생각하면 됩니다: CPU → “설정만 하는 관리자” Timer → “자동으로 일하는 공장 기계” PWM 출력 → “계속 나오는 제품” 4. analogWrite()의 진짜 역할 analogWrite ( 9 , 64 ); 이 한 줄은: “9번 핀에 연결된 Timer에게 듀티비 25%로 계속 출력하라고 설정하는 것” ❌ 잘못된 이해 CPU가 계속 ON/OFF 반복 ⭕ 실제 구조 CPU는 1번 설정 이후 Timer가 자동 반복 5. 그럼 delay(...

[아두이노] 아두이노로 아날로그를 흉내 내다

PWM 제어의 마법과 Duty Cycle 1. 디지털은 왜 아날로그를 흉내 내야 할까? 아두이노 같은 디지털 시스템은 본질적으로 매우 단순합니다. OFF → 0 V 0V ON → 5 V 5V 즉, 두 가지 상태만 존재하는 세계 입니다. 하지만 현실 세계는 연속적입니다. LED 밝기 조절 모터 속도 제어 전압의 미세한 변화 이러한 아날로그 값을 표현하기 위해 등장한 기술이 바로 👉 PWM (Pulse Width Modulation, 펄스 폭 변조) 입니다. 2. PWM의 핵심: 전압이 아니라 “시간”을 쪼갠다 PWM의 핵심 아이디어는 단순합니다. 전압의 크기를 바꾸는 것이 아니라, ON 상태의 시간을 조절한다. ⏱ 아두이노 PWM 주기 아두이노 UNO의 기본 PWM 주파수는 약 f = 490  Hz f = 490 \text{ Hz} 즉, 1초 동안 490번 반복된다는 의미입니다. 한 주기의 시간은 T = 1 f = 1 490 ≈ 2.04  ms T = \frac{1}{f} = \frac{1}{490} \approx 2.04 \text{ ms} 👉 1개의 “아주 짧은 시간 조각”이 약 2.04ms 입니다. 3. Duty Cycle: 밝기를 결정하는 핵심 변수 PWM에서 우리가 조절하는 것은 바로 Duty Cycle 입니다. D = T O N T × 100 % D = \frac{T_{ON}}{T} \times 100\% 🔦 의미 T O N T_{ON} : 전압이 ON 상태인 시간 T T : 전체 주기 시간 💡 예시 ① Duty 10% D = 10 % D = 10\% 대부분 OFF LED: 매우 어두움 ② Duty 50% D = 50 % D = 50\% ON / OFF가 동일 인간 눈에는 중간 밝기로 인식 👉 평균 전압 개념: V a v g = D ⋅ V m a x V_{avg} = D \cdot V_{max} V a v g =...