안녕하세요, 고고메이커입니다.
LED란
오늘은 아두이노를 다루기 위한 기본적인 LED제어에 대해 공부 해 보겠습니다.
우선, LED란 무엇일까요?
LED또는 발광다이오드(앞으로 LED라고 얘기함)라고 불리는 이 부품은 빛이 나는 다이오드입니다.
'그럼 다이오드가 뭐냐?' 라고 물을 건데요, 다이오드는 전류가 한 쪽으로 흐르게 하는 부품입니다.
그렇다면 LED가 뭔지 감이 올 겁니다. LED는 특정 방향으로 전류가 흐를 때, 빛이 나는 부품입니다.
그렇기 때문에 LED는 항상 방향을 잘 지켜 꼽아야 합니다.
LED는 긴 다리가 +, 짧은 다리가 - 입니다.
또한, LED는 저항 값이 매우 작기 때문에 저항 없이 꼽으면 전기가 많이 통해서 보드나 LED가 탑니다.
꼭 주의하세요!!! (저도 이거 때문에 LED 많이 태우고, 보드 한 개 날릴 뻔 했어요 ㅠ.ㅠ)
실습1-기본익히기1
우선, LED 한 개를 깜박여 봅시다.
준비물 :
아두이노 UNO보드 · · · · · · · 1개
220Ω(또는 330Ω) 저항 · · · · · 1개
아무 LED · · · · · · · · · · · · 1개
MM 점퍼선 · · · · · · · · · · · 2개
회로는 이렇습니다.
이번 프로그램의 소스 코드입니다.
#define LED1 4 //LED의 핀번호 지정
void setup() {
pinMode(LED1, OUTPUT); //LED핀을 출력으로 설정
}
void loop() {
digitalWrite(LED1, HIGH); //LED를 켠다
delay(1000); //1000ms 기다리기
digitalWrite(LED1, LOW); //LED를 끈다
delay(1000); //1000ms 기다리기
}
이 코드를 실행시키면, (적어도 회로만 잘 연결했으면, ) 1초 간격으로 LED가 깜박거릴 것입니다.
작동영상
실습2-응용해보기1
자, 이제 LED 깜박이는 것을 해 보았으니 이제 한 번 응용해 볼까요?
이번엔 빨강, 노랑, 초록 LED를 이용해 신호등을 만들어 봅시다.
준비물 :
아두이노 UNO보드 · · · · · · · 1개
220Ω(또는 330Ω) 저항 · · · · · 3개
빨강, 노랑, 초록 LED 각 · · · · · 1개
MM 점퍼선 · · · · · · · · · · · 4개
회로는 이렇습니다.
이번 프로그램의 소스 코드입니다.
다운로드 받을 수 있는 파일도 준비해 놓았습니다.
#define LED_R 4 //빨강 LED핀 지정
#define LED_Y 3 //노랑 LED핀 지정
#define LED_G 2 //초록 LED핀 지정
void setup() {
pinMode(LED_R, OUTPUT); //LED핀을 출력으로 지정
pinMode(LED_Y, OUTPUT);
pinMode(LED_G, OUTPUT);
}
void loop() {
digitalWrite(LED_G, HIGH); //초록불이 켜짐
delay(5000); //5000ms 기다림
digitalWrite(LED_G, LOW);
for(int i = 0; i < 5; i++) { //노랑 LED가 5번 깜박이게 만듦
digitalWrite(LED_Y, HIGH);
delay(500);
digitalWrite(LED_Y, LOW);
delay(500);
}
digitalWrite(LED_R, HIGH); //빨강 불이 켜짐
delay(5000); //5000ms 기다림
digitalWrite(LED_R, LOW);
}
이 코드를 실행시키면, 처음에 5초동안 초록 LED가 켜져 있다가 노랑 LED가 5번 깜박입니다. 그리고 빨강 LED가 5초동인 켜져 있게 됩니다.
작동영상
실습3-기본익히기2
디지털 출력으로 LED 다루기는 실컷 했으니, 한 번 아날로그 출력으로 놀아 봅시다.
우선, LED 한 개를 깜박여 봅시다.
준비물 :
아두이노 UNO보드 · · · · · · · 1개
220Ω(또는 330Ω) 저항 · · · · · 1개
아무 LED · · · · · · · · · · · · 1개
MM 점퍼선 · · · · · · · · · · · 2개
회로는 이렇습니다.
이번 프로그램의 소스 코드입니다.
다운로드 받을 수 있는 파일도 준비해 놓았습니다.
#define LED1 3
void setup() {
//아날로그 출력은 OUTPUT 설정 안 하셔도 됩니다.
}
void loop() {
for(int i = 0; i < 255; i++) { //i가 255가 될 때 까지 반복
analogWrite(LED1, i); //LED1의 출력값을 i로 설정
delay(10);
}
for(int i = 255; i > -1; i--) { //i가 -1이 될 때 까지 반복
analogWrite(LED1, i); //LED1의 출력값을 i로 설정
delay(10);
}
}
위에 코드에서, i > -1 이렇게 한 이유는 확실하게 LED를 끄기 위해서 입니다.
이 코드를 실행시키면, LED가 천천히 밝아졌다 꺼질 겁니다.
작동영상... 은 없습니다 ㅜ
실습4-응용해보기2
어때요~ 여러분, 작동이 잘 되셨나요?
마지막으로 우리가 저번에 배웠던 아날로그 출력(PWM)을 이용한 작은 LED파도타기를 만들어 볼까 해요.
준비물 :
아두이노 UNO보드 · · · · · · · 1개
220Ω(또는 330Ω) 저항 · · · · · 3개
아무 LED · · · · · · · · · · · · 3개
MM 점퍼선 · · · · · · · · · · · 4개
아날로그 출력을 사용할 것이기 때문에 PWM핀에 LED를 꽂아야 하는 점, 잊지 마세요!
회로는 이렇습니다.
이번 프로그램의 소스 코드입니다.
#define LED1 3
#define LED2 5
#define LED3 6
#define WAIT 5 //LED가 밝아지는 속도
void setup() { //처음에 켜지는 효과는 1번만 필요하니까
for(int i = 0; i < 255; i++) {
analogWrite(LED1, i);
delay(WAIT);
}
}
void loop() {
for(int i = 0; i < 255; i++) {
analogWrite(LED1, 255-i); //LED가 점차 꺼지는 효과
analogWrite(LED2, i);
delay(WAIT);
}
analogWrite(LED1, 0);
for(int i = 0; i < 255; i++) {
analogWrite(LED2, 255-i); //LED가 점차 꺼지는 효과
analogWrite(LED3, i);
delay(WAIT);
}
analogWrite(LED2, 0);
for(int i = 0; i < 255; i++) {
analogWrite(LED1, i);
analogWrite(LED3, 255-i);
delay(WAIT);
}
analogWrite(LED3, 0);
}
이 코드를 실행시키면, 밑에 있는 LED 부터 순차적으로 켜졌다가 꺼집니다
지금까지
다앙한 방법으로 LED를 제어 해 보았습니다.
어땠나요?
이상 고고메이커였습니다.
다음 글에서 또 만나요!
'Arduino' 카테고리의 다른 글
4. 아두이노 가변저항 사용 (0) | 2021.02.12 |
---|---|
2. 아두이노 기초 사용법 (0) | 2021.02.11 |