삼색 LED
LED(발광 다이오드)는 전기를 빛으로 바꾸는 소자로, 빨강(Red), 초록(Green), 파랑(Blue)의 삼색 LED는 이 세 가지 색의 조합으로 다양한 색상을 표현할 수 있습니다. 이는 우리가 일상에서 접하는 컴퓨터 모니터나 TV에서도 RGB 색 조합 방식을 사용해 색을 구현하는 것과 같은 원리입니다.
삼색 LED 구성과 기본 원리
삼색 LED는 RGB 핀을 조절해 다양한 색을 구현합니다. 다리 구성을 보면, 아노드 타입과 캐소드 타입으로 나뉘며, 이번 실습에서는 캐소드 타입을 사용합니다. 캐소드 타입은 GND(그라운드)에 연결하여 작동하며, 아두이노와 연결해 전압을 조절함으로써 색을 조합할 수 있습니다.
- 캐소드: 그라운드 핀에 연결
- 아노드: 전원 핀에 연결
아노드(Anode) 타입인지 캐소드(Cathode) 타입인지 확인하는 방법
1.데이터 시트 확인: 삼색 LED 제품의 데이터 시트를 보면 다리의 핀 배열과 타입이 명시되어 있습니다. 제조사에서 제공하는 데이터 시트를 참조하는 것이 가장 정확합니다.
2.다리 길이 확인:대부분의 삼색 LED는 가장 긴 다리가 공통 단자이며, 이 공통 단자가 양극(아노드)인지 음극(캐소드)인지에 따라 타입이 결정됩니다.
- 공통 아노드 타입은 가장 긴 다리가 **양극(+)**입니다.
- 공통 캐소드 타입은 가장 긴 다리가 **음극(-)**입니다.
3.테스트:
- 멀티미터나 간단한 회로를 구성해 전원을 연결해 보면 아노드/캐소드 타입을 구별할 수 있습니다.
- 아노드 타입은 공통 핀을 전원(+)에 연결하고, 각 색상의 핀을 **그라운드(-)**에 연결할 때 발광합니다.
- 캐소드 타입은 공통 핀을 그라운드(-)에 연결하고, 각 색상의 핀을 **전원(+)**에 연결할 때 발광합니다.
이 방법을 통해 LED가 아노드 또는 캐소드 타입인지를 쉽게 확인할 수 있습니다.
버튼으로 LED 색 바꾸기
버튼을 통해 삼색 LED의 색을 변경하는 실습을 진행해 봅니다. 세 개의 버튼을 활용해 각각 빨강, 초록, 파랑을 제어할 수 있습니다. 버튼을 누르면 해당 색이 활성화되며, 조합에 따라 다양한 색상을 표현하게 됩니다.
준비물:
- 삼색 LED 1개
- 버튼 3개
- 10k 옴 저항 3개
- 점퍼 와이어 15개
- 브레드보드 1개
연결 순서:
- 아두이노 보드의 그라운드 핀을 브레드보드의 파란색 세로줄에, 전원 핀을 빨간색 세로줄에 연결합니다.
- 삼색 LED의 다리를 브레드보드에 꽂습니다. 캐소드 핀은 그라운드에, RGB 핀은 아두이노 보드의 11, 10, 9번 핀에 각각 연결합니다.
- 버튼을 브레드보드에 꽂고, 아두이노의 디지털 핀 2, 3, 4번에 연결합니다.
int r = 0, g = 0, b = 0;
void setup() {
pinMode(4, INPUT);
pinMode(3, INPUT);
pinMode(2, INPUT);
}
void loop() {
if (digitalRead(4) == HIGH) {
++r;
if (r > 255) {
r = 0;
}
}
if (digitalRead(3) == HIGH) {
++g;
if (g > 255) {
g = 0;
}
}
if (digitalRead(2) == HIGH) {
++b;
if (b > 255) {
b = 0;
}
}
analogWrite(11, r);
analogWrite(10, g);
analogWrite(9, b);
delay(10);
}
자동으로 색 바꾸기
삼색 LED의 색이 자동으로 변하도록 설정하여 다양한 색을 자동으로 보여주는 방식도 구현할 수 있습니다. 일정 시간마다 색상이 변경되도록 프로그래밍합니다.
준비물:
- 삼색 LED 1개
- 점퍼 와이어 4개
- 브레드보드 1개
연결 순서:
- 삼색 LED를 브레드보드에 꽂습니다.
- LED의 GND 핀을 아두이노 보드의 그라운드에 연결하고, RGB 핀을 11, 10, 9번 핀에 연결합니다.
void setup() {
randomSeed(analogRead(A0));
}
void loop() {
analogWrite(11, random(256));
analogWrite(10, random(256));
analogWrite(9, random(256));
delay(1000);
}
randomSeed(): 난수로 뽑을 숫자들을 섞어주는 함수
- 구조: randomSeed(시드)
- 시드: 숫자들을 섞을 때 기준이 되는 숫자
- 반환 값: 없음
- randomSeed(5); //5를 이용해 숫자를 섞는다.
analogRead(): 아날로그 입력 핀의 전압 상태를 읽는 함수
- 구조: analogRead(아날로그 입력 핀 이름)
- 아날로그 입력 핀 이름: 전압의 상태를 읽고자 하는 아날로그 입력 핀의 이름
아두이노 UNO 보드의 경우 A0 ~ A5
- 반환 값: 0V ~ 5V 사이의 전압을 0 ~ 1,023 사이의 값으로 변환하여 반환
int value = analogRead(A0); //A0 핀의 전압 상태 값을 읽어 value 변수에 넣는다.
random(): 무작위로 수를 고르는 함수
- 구조: random(최대값)
- 최대값: 무작위로 수를 고를 때 최대값
- 반환 값: 난수 (0부터 최대값보다 1이 작은 수 사이에서 고른 난수)
ex) 최대값에 256이 들어가면 0에서 255사이의 무작위 수가 만들어짐
int value = random(256); //0과 255 사이에 난수를 골라 value 변수에 넣는다.
아두이노 사용 시 주의사항
- 디지털 핀 0, 1번 사용 금지: 시리얼 통신에 연결되어 있어 에러 발생 가능성이 높습니다.
- 전원 핀과 그라운드 핀 연결 금지: 저항 없이 두 핀이 연결되면 과전류로 인해 보드가 손상될 수 있습니다. 아두이노 보드가 견딜 수 있는 최대 전류는 200mA로 5V 전원 핀을 곧바로 그라운드 핀에 연결하면 저항이 거의 없어 200mA보다 큰 전류가 흘러 망가집니다. 같은 이유로 5V 전원 핀을 전압이 LOW로 설정된 디지털 출력 핀에 연결하는 것도 안됩니다.
- 아두이노 보드 꺼진 상태로 연결하기: 전자부품은 아두이노 보드가 꺼진 상태에서 연결하세요. 전원을 켜고 연결하다가 아두이노 보드와 연결된 컴퓨터가 모두 망가질 수 있습니다.
- 전원이 있는 USB 허브 사용: 안전을 위해 컴퓨터와의 연결 시 전원이 있는 USB 허브를 사용하면 문제가 발생했을 때 컴퓨터 손상을 방지할 수 있습니다.
'IT개발및프로그래밍 > 아두이노' 카테고리의 다른 글
아두이노 7: 피에조 스피커를 활용한 멜로디 연주 (0) | 2024.10.29 |
---|---|
아두이노 5 : PWM을 이용한 LED 제어 및 버튼 활용하기 (0) | 2024.10.28 |
아두이노 4: 디지털과 아날로그 신호 (0) | 2024.10.22 |
아두이노 3: 아두이노 프로그래밍 기초 (0) | 2024.10.22 |
아두이노 2: 아두이노 준비하기 (1) | 2024.10.22 |