ISSAC.Min

[Arduino] 아두이노 LED 켜기, 파도치기 예제 본문

STUDY/Arduino

[Arduino] 아두이노 LED 켜기, 파도치기 예제

ISSAC.M 2020. 11. 23. 13:55
반응형

LED란?

 오늘 다뤄볼 아두이노에 관련된 소자는 LED(Light Emitting Diode)이다. 사실 아마도 키트를 구입하셨던 분들이라면 LED가 가장 친근하지 않았을까? LED가 어떤 소자인지에 대해서 자세하게 다뤄볼 생각(전자학도의 욕심)은 있지만 그냥 간단하게 이야기해서 빛을 내는 고체형 반도체로 생각하면된다. 

 

 그리고 다른 소자들보다 진짜로 우리 일상생활에서 알기모르게 찾아볼 수 있다. 바로 LED 조명이다. 요즘은 가정에서 대부분 형광등을 쓰지 않고 이런 LED 조명을 사용하는데 여러가지 면에서 형광등보다는 강력한 힘을 가지고 있다.

 

 높은 에너지 효율, 친환경적 특징 등이 LED 조명의 강점. 또한 빛의 색상이나 온도, 밝기등의 제어가 참 용이합니다. 이러한 특성때문에 가정의 조명 뿐만 아니라 다양한 분야에서 사랑을 받고 있다. 

 

"우리의 삶에 변화를 가져다 주는 조명 LED"

 

[그림 1] 백열 전구

 

[그림 2] LED 전구

 

아두이노에서의 LED

 키트를 구입하거나 구매처를 통해서 LED를 검색해보셨다면 우리가 실제로 사용하는 LED랑은 많이 다른 모습을 보여주는데 구동방식에서 크게 다르진 않다. 형태만 다른것.

 

 아마 가정용 조명을 뜯어보면 아래와 같은 줄 LED가 들어있을 것이다. 아니면 현관에 센서등도 요즘에는 [그림 2]와 같이 LED 전구를 쓰는 곳도 많이 있다.

 

[그림 3] 줄 LED

우리가 쓸 LED는 바로 아래 사진과 같은 LED이다. 우리는 이것을 LED 보다는 발광 다이오드라고 자주 부른다. 하지만 아두이노를 다루면서 굳이 LED! LED! 이것보단 간단하게 발광 다이오드라고 생각한다.

 

[그림 4] LED, 발광 다이오드

 

 그렇다면 발광 다이오드의 구조는 어떨까?

 

"구글링!!!!"

 

[그림 5] 롸??

 

 어려운건 아직은 알필요 없다. 알고 싶다면 당장 전자학도가 되는걸 추천한다. 정말 자세하게 알 수 있다. 

그렇지만 발광 다이오드를 사용하기 위한 구조는 알고있어야한다.

 

"긴건 +, 짧은건 - !!" 

 

[그림 6] 발광 다이오드

 

플라스틱 렌즈를 제외하고 우리눈에 보이는 돌출된 2개의 핀을 전자용어로 Lead라고 한다. 쉽게는 단자 또는 전극 단자라고 부른다. 그 중 기다란 친구는 에노드(Anode), 짧은 친구는 케소드(Cathode)라고 부른다.

 

"에노드는 + 단자, 케소드는 - 단자이며 이것은 우리가 회로를 설계할때 정말 중요한 역할을 한다."

 

 

[예제 1] LED를 켜보자!

간단하게 발광 다이오드에 대해서 알아보았으니 이제 한번 아두이노를 통해서 발광 다이오드를 켜보도록 하자! 오늘은 3가지의 LED 예제를 준비했다.

 

첫번째 예제의 준비물은 아래와 같다.

 

준비물

 

부품명 부품사진 개수
아두이노 우노 보드
1
발광 다이오드
1
220옴 저항
1
점퍼선(수 - 수)
2

 

아두이노 구성

 아두이노 우노 보드에서 GND란 그라운드를 이야기한다. 접지라고도 하며 - 단자에 연결하면된다.

LED 사진을 잘 보면 약간 구부려진 오른쪽이 + 곧은 선이 - 이다. 

[그림 7] 아두이노 구성

아두이노 코딩

 처음에 설치했던 Arduino IDE를 켜서 아래와 같은 코드를 집어 넣는다.

 

1
2
3
4
5
6
7
8
9
10
void setup() {
  pinMode(7, OUTPUT);
}
 
void loop() {
  digitalWrite(7, HIGH);
  delay(1000);
  digitalWrite(7, LOW);
  delay(1000);
}
cs

 

코드 설명을 간단히 하자면

- pinMode는 몇 번 핀에 소자를 연결했는가?

- digitalWrite는 몇 번 핀에 어떤 데이터를 보내겠는가?

- delay는 몇 초의 딜레이를 주겠나? 

 

아두이노 구성에서 7번 디지털 핀에 LED를 연결했기 때문에 7로 핀연결을 정의하고 LED의 특성 중 HIGH는 불을 켠다. LOW는 불을 끄는 것이라고 생각한다.

 

또한 delay에 들어가는 수는 ms를 기준으로 하기 때문에 1초의 딜레이를 주기위해서는 1000ms를 적어 주면된다.

 

그렇다면 위의 코드는 1초마다 켜졌다 꺼졌다를 반복하는 코드가 되는 것.

 

아두이노 업로드

 코딩을 했으니 실제로 돌아가는지 확인해보기 위해서는 아두이노 우노보드에 우리가 작성한 코드를 업로드해야한다.

 

Arduino IDE의 상단을 보면 툴을 눌러서 우리가 사용할 보드와 보드 포트를 설정한다.

 

 

 

현재 우리는 아두이노 우노 보드를 사용 중이니 보드는 Arduino Uno로 설정하고 포트는 컴퓨터와 우노보드를 연결하기 전 후에 다르게 새롭게 생성된 포트를 선택하면 된다.

 

이제 업로드만 하면 된다. 업로드는 상단에 툴 왼쪽에 있는 스케치 중 업로드를 클릭하면된다.

 

 

업로드가 정상적으로 처리되면 아래의 컴파일 완료라고 적혀있는 부분이 업로드 완료.라는 창이 뜬다.

그리고 이제 우리가 구성했던 LED를 보자.

 

 

"성공!!!"

 

 

[예제 2] LED의 밝기를 조절해보자!

 LED의 밝기를 조절하기 위해서는 첫번째 예제에서 하나의 소자를 변경하면 된다. 

바로 저항! 첫번째에서 사용했던 저항 소자는 전문용어로 탄소피막 저항라고 생각하며 저항이 고정적이다. 나중에 이 저항을 구별하는 법도 포스팅하겠다.

 

각설하고 가변저항은 이름과 같이 변화하는 저항을 말한다. 당연히 저항의 값이 변화한다. 

 

가변저항은 여러개가 있지만 주로 볼 수 있는 형태는 아래와 같다.

 

 

우리가 사용하는 일반적인 탄소피막 저항과는 다르게 가변저항은 핀이 3개인데 일반적으로 이 3개를 모두 사용하지 않는다. 주로 2개의 핀을 사용하며 중앙 핀이 기준이고 양 끝의 핀이 구동 핀이라고 본다. 

즉, 양 끝의 핀을 꼽으면 가변이 아니라 가변저항의 최대 저항을 사용하게 된다.

 

준비물

 

부품명 부품사진 개수
아두이노 우노 보드
1
발광 다이오드
1
가변저항
1
점퍼선(수 - 수)
3

 

아두이노 구성

 

아두이노 업로드

 업로드 코드 내용은 예제 1과 동일하게 업로드한다. 업로드가 완료되었다면 우리가 구성했던 LED를 보자!

그리고 바로 가변저항을 돌려보면 LED의 밝기가 변경되는 것을 알 수 있다.

 

 

 

"성공!!"

 

[예제 3] LED로 파도를 만들어보자!!

앞의 예제가 너무 지루하고 재미 없었을 수도 있다. 이제는 진짜 실생활에서 사용할 수 있는 LED 파도를 만들어 보도록 하겠다. 크리스마스를 대비해서 조그마한 트리를 만들고 있는데 지금 예제와 원리를 크게 다르지 않다. 

 

이번에는 마지막 LED 예제이니 LED도 10개 정도 사용해보자!

 

준비물

 

부품명 부품사진 개수
아두이노 우노 보드
1
발광 다이오드
10
220옴 저항
10
점퍼선(수 - 수)
21

 

아두이노 구성

 

아두이노 코딩 및 업로드

 아래와 같이 코딩을 한 후 업로드해보자.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
void setup() {
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(4, OUTPUT);
}
void loop() {
  digitalWrite(13, HIGH);
  delay(100);
  digitalWrite(13, LOW);
  delay(100);
  
  digitalWrite(12, HIGH);
  delay(100);
  digitalWrite(12, LOW);
  delay(100);
  
  digitalWrite(11, HIGH);
  delay(100);
  digitalWrite(11, LOW);
  delay(100);
  
  digitalWrite(10, HIGH);
  delay(100);
  digitalWrite(10, LOW);
  delay(100);
  
  digitalWrite(9, HIGH);
  delay(100);
  digitalWrite(9, LOW);
  delay(100);
  
  digitalWrite(8, HIGH);
  delay(100);
  digitalWrite(8, LOW);
  delay(100);
  
  digitalWrite(7, HIGH);
  delay(100);
  digitalWrite(7, LOW);
  delay(100);
  
  digitalWrite(6, HIGH);
  delay(100);
  digitalWrite(6, LOW);
  delay(100);
  
  digitalWrite(5, HIGH);
  delay(100);
  digitalWrite(5, LOW);
  delay(100);
  
  digitalWrite(4, HIGH);
  delay(100);
  digitalWrite(4, LOW);
  delay(100);
}
cs

 

 

"성공!!!"

 

반응형