안녕하세요, 고고메이커입니다.

LED란

오늘은 아두이노를 다루기 위한 기본적인 LED제어에 대해 공부 해 보겠습니다.

 

우선, LED란 무엇일까요?

LED또는 발광다이오드(앞으로 LED라고 얘기함)라고 불리는 이 부품은 빛이 나는 다이오드입니다.

'그럼 다이오드가 뭐냐?' 라고 물을 건데요, 다이오드는 전류가 한 쪽으로 흐르게 하는 부품입니다.

그렇다면 LED가 뭔지 감이 올 겁니다. LED는 특정 방향으로 전류가 흐를 때, 빛이 나는 부품입니다.

그렇기 때문에 LED는 항상 방향을 잘 지켜 꼽아야 합니다.

LED는 긴 다리가 +, 짧은 다리가 - 입니다.

 

또한, LED는 저항 값이 매우 작기 때문에 저항 없이 꼽으면 전기가 많이 통해서 보드나 LED가 탑니다.

꼭 주의하세요!!! (저도 이거 때문에 LED 많이 태우고, 보드 한 개 날릴 뻔 했어요 ㅠ.ㅠ)

 

실습1-기본익히기1

우선, LED 한 개를 깜박여 봅시다.

 

준비물 :

아두이노 UNO보드 · · · · · · · 1개

220Ω(또는 330Ω) 저항 · · · · · 1개

아무 LED · · · · · · · · · · · · 1개

MM 점퍼선 · · · · · · · · · · · 2개

회로

회로는 이렇습니다.

이번 프로그램의 소스 코드입니다.

LEDblink.ino
0.00MB

#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개

 

회로는 이렇습니다.

이번 프로그램의 소스 코드입니다.

다운로드 받을 수 있는 파일도 준비해 놓았습니다.

LEDjctsign.ino
0.00MB

#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개

 

회로는 이렇습니다.

이번 프로그램의 소스 코드입니다.

다운로드 받을 수 있는 파일도 준비해 놓았습니다.

LED-analogWave.ino
0.00MB

#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

+ Recent posts