컴퓨터

ARDUINO [강의 1강] 빛의 시작: LED와 LED 모듈 완전 정복

조이팜 2025. 12. 14. 16:32

오늘은 아두이노의 가장 기초적이면서도 중요한 출력 장치인 LED(발광 다이오드)와 사용하기 편하게 만든 LED 모듈에 대해 정리해 드리겠습니다. 이 강의 자료는 학생들이 부품과 모듈의 차이를 직관적으로 이해하고, 안전하게 회로를 구성하는 데 초점을 맞췄습니다.

 

1. 개요: 무엇이 다른가요?

가장 먼저 두 부품의 정의를 명확히 짚고 넘어가겠습니다.

LED (Light Emitting Diode): 전류가 흐르면 빛을 내는 반도체 부품입니다. 아두이노가 세상에 신호를 보내는 가장 기본적인 출력 장치입니다.

LED 모듈: 요리를 위한 '밀키트'와 같습니다. LED와 필수적인 부품(저항 등)을 작은 기판에 미리 조립해 두어, 선만 꽂으면 바로 쓸 수 있게 만든 형태입니다.

단일 LED는 회로 원리를 배우기에 좋고,

LED 모듈은 빠르고 간편하게 프로젝트를 만들 때 유리해요.

 

2. 핀 설명 및 스펙

A. LED (Light Emitting Diode)

핀 구분 (극성 주의!)

긴 다리 (+, Anode): 전기가 들어가는 곳. 저항을 거쳐 아두이노 핀에 연결.

짧은 다리 (-, Cathode): 전기가 나가는 곳. GND(접지)에 연결.

동작 스펙

전압: 약 1.8V ~ 2.2V (빨간색 기준)

전류: 10 ~ 20mA

주의사항: LED는 과도한 전류가 흐르면 타버립니다. 반드시 저항(220 ~ 330옴)을 직렬로 연결해 전류를 제한해야 합니다.

B. LED 모듈 (Module)

핀 구성 (보통 3핀):

VCC (또는 +): 3.3 ~ 5V 전원 입력

GND (또는 -): 공통 접지

SIG (또는 S/IN): 신호 핀 (아두이노 디지털 핀 연결)

특징: 기판 위에 작은 칩 저항(SMD 저항)이 이미 붙어 있습니다. 따라서 별도의 저항 없이 바로 연결해도 안전합니다.

3. 연결 방법 (회로 구성)

두 부품의 연결 방식을 비교해 봅시다. 목표는 디지털 8번 핀(D8)으로 제어하는 것입니다.

D8 → 저항 → 긴 다리(+) 짧은 다리(-) → GND

// [1] 변수 선언: LED가 연결된 핀 번호를 이름표(변수)로 만들어 줍니다.
const int LED_PIN = 8; // 단일 LED든 모듈이든 신호선이 연결된 핀 번호

void setup() {
  // [2] 핀 모드 설정: 이 핀을 전기를 내보내는 '출력' 용도로 쓰겠다고 선언합니다.
  pinMode(LED_PIN, OUTPUT);  // pinMode(LED_PIN, OUTPUT): 이 핀으로 전기를 쏘아 보낼 거야!
}

void loop() {
  // [3] LED 켜기: 핀에 5V 전압을 줍니다 (HIGH).
  digitalWrite(LED_PIN, HIGH); 
  
  // [4] 대기: 1000밀리초 = 1초 동안 상태를 유지합니다.
  delay(1000); 
  
  // [5] LED 끄기: 핀의 전압을 0V로 만듭니다 (LOW).
  digitalWrite(LED_PIN, LOW);  
  
  // [6] 대기: 꺼진 상태로 1초 동안 기다립니다.
  delay(1000); 
}
 

 

단일 LED를 연결할 때, 저항은 +쪽(긴 다리)에 연결하든 -쪽(짧은 다리)에 연결하든 직렬이기만 하면 상관없습니다. 하지만 습관적으로 신호가 들어오는 +쪽에 연결하는 것이 헷갈리지 않고 좋습니다.

VCC → 5V

GND → GND

SIG → D8

4. 3선 LED 모듈

int redPin = 8;
int greenPin = 9;

void setup() {
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
}

void loop() {
  // 1. 빨간색만 켜기
  digitalWrite(redPin, HIGH);
  digitalWrite(greenPin, LOW);
  delay(1000);

  // 2. 초록색만 켜기
  digitalWrite(redPin, LOW);
  digitalWrite(greenPin, HIGH);
  delay(1000);

  // 3. 노란색 만들기 (빨강 + 초록 같이 켜기)
  digitalWrite(redPin, HIGH);
  digitalWrite(greenPin, HIGH);
  delay(1000);
}
 
 

5. 실력 향상 챌린지 (확장 아이디어)

 

난이도 1단계: 시간의 마법사

  • delay() 안의 숫자를 바꿔보세요. 100(0.1초)으로 줄이면 어떻게 보일까요?
  • 코드를 수정하여 '3초 켜지고 0.5초 꺼지는' 패턴을 만들어 보세요.
  • 목표: 코드의 흐름과 시간 개념 익히기.

난이도 2단계: 신호등 만들기

  • LED를 3개(빨강, 노랑, 초록) 연결하여 순서대로 켜지는 신호등을 만들어 보세요.
  • (준비물: 버튼 1개 추가) 버튼을 눌렀을 때만 LED가 켜지게 만들어 보세요.
  • 목표: 여러 개의 출력 제어 및 입력(버튼)과의 상호작용 이해.
반응형