재료

  • USB 케이블 1개
  • LED 1개
  • 브래드 보드 1개
  • 점프 와이어 2개
  • 아두이노 우노 1개
  • 저항 1개

 1장에서 아날로그와 디지털 신호의 차이에 대해서 간략하게 설명드렸었는데, 다시 정리해보면 아날로그 신호는 디지털 신호와 다르게 0부터 1023까지의 숫자로 표현이 가능합니다. 이 의미에 대해서 예를 들어 설명해드리면 디지털 신호가 2장에서 진행한 프로젝트와 같이 LED를 켜고 끄는 정도로 다룰 수 있다면 아날로그 신호를 사용하면 LED를 서서히 키고 꺼지게 하는 등의 섬세한 표현을 가능하게 해줍니다. 이번 프로젝트에서는 LED에 아날로그 신호를 입력하여 LED의 밝기가 서서히 변하도록 조절해보도록 합시다.


STEP1. 준비물

아두이노 보드, USB 케이블, 브래드 보드, LED 1개, 저항 1개, 점프 와이어 2개


STEP2. 회로도

이번 회로도는 2장에서 진행했던 LED 깜빡이기 프로젝트의 회로도와 동일합니다. 다만 다른 점이 있다면 디지털 입출력 핀을 사용했던 기존의 프로젝트와는 다르게 물결 표시(~)가 있는 3, 5, 6, 9, 10, 11번 아날로그 입출력 핀을 사용해주시면 됩니다.



STEP3. 코드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
const int LED=6; 
int i;
 
void setup() {
  // put your setup code here, to run once:
  pinMode(LED, OUTPUT);
}
 
void loop() {
  // put your main code here, to run repeatedly:
  for(i=0; i<255; i++){
    analogWrite(LED, i);
    delay(10);
  }
  for(i=255; i>=0; i--){
    analogWrite(LED, i);
    delay(10);
  }
}
cs


코드를 보시면 아시겠지만, 2장에서 진행했던 LED 깜빡이기 프로젝트에서는 digitalWrite() 함수를 사용해서 LED에 HIGH와 LOW 신호를 입력해줬다면, 이번에는 analogWrite() 함수를 사용하여 0에서부터 255까지의 수를 입력해줄겁니다. 여기서 255는 digital에서의 HIGH와 같다고 보시면 됩니다.


STEP4. 결과 확인


결과를 확인해보니 LED가 깜빡거리는 것이 아니라 서서히 켜지고 서시히 꺼지는 것을 확인할 수 있습니다. 아날로그 신호를 이용하면 LED를 섬세하게 조작하는 것이 가능하다는 것을 확인할 수 있습니다.


STEP5. 응용

 회로를 좀 더 복잡하게 구성하여 여러 개의 LED를 순차적으로 조작해보도록 할게요.

먼저 회로를 아래와 같이 만들어주시고,


코드를 다음과 같이 업로드해주시면,

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
const int LED1=6;
const int LED2=5;
const int LED3=3; 
int i;
 
void setup() {
  // put your setup code here, to run once:
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
}
 
void loop() {
  // put your main code here, to run repeatedly:
  for(i=0; i<255; i+=5){
    analogWrite(LED1, i);
    delay(10);
  }
  for(i=0; i<255; i+=5){
    analogWrite(LED1, 255-i);
    delay(10);
    analogWrite(LED2, i);
    delay(10);
  }
  for(i=0; i<255; i+=5){
    analogWrite(LED2, 255-i);
    delay(10);
    analogWrite(LED3, i);
    delay(10);
  }
  for(i=255; i>=0; i-=5){
    analogWrite(LED3, i);
    delay(10);
  }
}
cs


아래와 같은 결과를 확인할 수 있습니다.

LED 깜빡이기 프로젝트보다 훨씬 부드럽죠?



댓글 2

MADE BY

김민정

사물인터넷, 아두이노