반응형

【 아두이노초급#4-2 아두이노 초급 강좌! #05 "아날로그 입출력하기 2편"( Arduino for Absolute beginner! )

아날로그 입출력 2편

 

- 가변저항을 돌리면 LED의 밝기가 조절되는 실습입니다.

- 아두이노에서 가변저항을 통해 아날로그 데이터를 입력받아서,  PWM(Pulse Width Modulation) 제어를 통해 LED로 밝기 조절이 되는 출력(아날로그 형태의 출력)을 해보는 실습입니다. 

- 아두이노는 기본적으로 디지털 장치여서 아날로그 출력이 되지 않습니다.  하지만, PWM 출력을 통해 아날로그와 같은 출력 효과를 낼 수 있습니다.  

- 가변저항의 전압값은 아두이노 Analog port (A0~A5)로 입력 받으면,  아두이노 내부에 10bit ADC (아날로그를 디지털로 변환하는 회로) 컨버터에 의해 즉, 2의 10승 (0~1023) 의 데이터를 입력 받게 됩니다.  그러면, 이 데이터를 가지고 8bit 의 출력을 지원하는 디지털 포트 (D2~D13)에 출력을 내보낼 수 있습니다.  이때, PWM(펄스 폭 변조) 신호 형태의 출력을 행하면 0V~5V 사이의 전압 형태로 출력을 조절 할 수 있어 아날로그식의 출력으로 활용 할 수 있게 됩니다. 
다만,  이런 PWM 출력 기능을 지원하는 디지털핀은 몇 개 정해져 있는데요,  아두이노 디지털포트 숫자 옆에 '~' 물결 무늬가 붙어 있는 단자가 바로 PWM출력 기능을 지원하는 단자입니다.  ( ~3, ~5, ~6, ~9, ~10 , ~11)  

- 이때,  입력값은 10비트인 2의 10승 (0~1023) 값이고, 출력값은 8비트인 2의 8승(0~255) 값이여서,   입력값과 출력값을 매칭시켜 주면 좋은 데요, 이를 지원하는 함수가 바로 매핑함수인 map ( ) 함수 입니다. 

 '값' 영역에는 수시로 변하는 입력 받는 변수를 넣고,   fromLow~fromHigh 는 0~1023 대입,  toLow~toHigh 는 0~255 를 대입하면 됩니다.   즉,  map(Value, 0, 1023, 0, 255);  이런 형태로 함수를 사용하면,  0~1023의 변화 값이 0~255의 변화값으로 대응(매칭이)되어 출력이 됩니다. 


【 이전 영상 보기 

 아두이노쌩초보 영상 #4  ☜ 클릭!
 아두이노쌩초보 영상 #3  ☜ 클릭!

 아두이노쌩초보 영상 #2  ☜ 클릭!
 아두이노쌩초보 영상 #1  ☜ 클릭!

 

【 실습절차 

1.  아래와 같은 회로를 조립하세요 ( 연결도 )

아날로그 입출력 연결도면

 

2. 부품준비
 -  아두이노 (우노)  x 1 개
 - 가변저항 또는 반고정 저항 1 개 (용량은 크게 상관 없음)

 3. 주의 사항
 - 가변저항의 가운데 핀을 반드시 아두이노의 A0 포트에 연결해 주어야 합니다. 

 

【 아두이노 코드 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
int VAR = 0
int LED = 11;
int LEDVar = 0;
void setup() {
  Serial.begin(9600); // 시리얼통신 사용선언
  pinMode(LED,OUTPUT);
}
void loop() {  
  VAR = analogRead(A0); 
  LEDVar = map(VAR,0,1023,0,255);
  Serial.println(LEDVar);
  analogWrite(LED, LEDVar);   
  delay(100);
}
 
cs


▶ 코드 다운로드

AnalogInOut_LED.zip
0.00MB


[ PWM 개념도 ]
디지털 보드인 아두이노에서는 아날로그 신호(전압)를 출력할 수 없는데요,
아래와 같이 PWM 방식을 이용하여 아날로그 출력을 보내어 LED 밝기 조절과 같은 할 수 있게 됩니다.

【 동작확인 및 강의 영상 

 아두이노를 처음 접하는 분들을 대상으로 자세하게 설명을 드리는 강의 영상입니다. 

 

 

반응형