반응형

【 아두이노초급#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 밝기 조절과 같은 할 수 있게 됩니다.

【 동작확인 및 강의 영상 

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

 

 

반응형
반응형

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

아두이노 아날로그 입출력 1편

 

 - 아두이노에서 아날로그 데이터를 입력받는 과정과 처리에 대해 설명합니다. 
 - 아두이노 Analog port (A0~A5)로 가변저항을 이용해서 데이터를 입력 받으면,  아두이노 내부에 10bit ADC (아날로그를 디지털로 변환하는 회로) 컨버터에 의해 즉, 2의 10승 (0~1023) 의 데이터를 입력 받게 됩니다.  
   이를 아두이노 IDE의 시리얼 모니터를 통해 확인할 수 있는 실습입니다.  
  이번 실습은 이어지는 다음 실습과 연결되어 있으니 바로 이어서 실습해 보세요. 
[ 이어지는 다음실습 :  rasino.tistory.com/317
 ] 

【 이전 영상 보기 

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

 

【 실습절차 

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

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

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

 

【 아두이노 코드 

int VAR = 0; 
void setup() {
  Serial.begin(9600); // 시리얼통신 사용선언
}
void loop() {  
  VAR = analogRead(A0); 
  Serial.println(VAR);
  delay(100);
}

▶ 코드 다운로드 

AnalogInOut_basic.zip
0.00MB

【 동작확인 및 강의 영상 

 

 

반응형
반응형

【 아두이노쌩초보#1 아두이노 완존 초보를 위한 강좌! #01 ( Arduino for Absolute beginner! )

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

【 다음 영상 보기 

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

 

 

【영상 강의 보기-YouTube

https://youtu.be/nI7qUIkfqZ4

 

 

[ 강의 내용 요약 ]

 

1. 아두이노 ↔ PC  시리얼 통신을 위한 포트 선택

 

2. LED를 12포트와 GND에 직접 연결하기

 (LED+리드선을 12번에,  LED-리드선을 GND에 연결) 

 

3. 아두이노의 디지털핀은 입력으로 사용할 것인지? 혹은 출력으로 사용할 것인지?에 대한 

방향을 setup() {  } 함수에서 설정해 주어야 한다.

 

4.  출력방향 설정은 아두이노 내장 명령어인 pinMode( ) 함수를 이용한다.

 - pinMode(핀 번호, 입력/출력 모드) 

 

5. LED를 켜기 위해서는 digitalWrite( )라는 명령어를 사용한다. 

 - digitalWrite(핀 번호, HIGH/LOW 논리값)

 

6.  직접적인 핀 번호 대신 변수를 활용하면 코드 길이가 길고 복잡할 수록 간단히 수정할 수 있고 판독이 쉬워지는 장점이 있다.   

  - int LED = 12;    (int : 정수형 선언으로, 정수 숫자에 해당하는 변수 선언)

 

7. 아두이노 delay( ) 딜레이 함수를 사용하여 LED가 켜고 꺼지는 타이밍을 조절할 수 있다. 

 - delay( ) 함수의 기본 단위는 ms (밀리 세컨드)로 1/1000을 의미 함으로,  1초 시간지연은 'delay(1000)'이라고 표시한다.

 

8. 흔히 저지르기? 쉬운 에러 상황 #1

 - 두 단어의 조합으로 구성된 아두이노의 명령어는 두 번째 단어 첫 문자를 대문자로 표시하여 정해 놓았다.

 - 대·소 문자를 구분하지 않아 아래와 같은 에러를 발생시키는 경우가 종종 있다.

 

9. 흔히 저지르기? 쉬운 에러 상황 #2

 - 한 줄 코드 끝부분에는 반드시 ';' 세미콜론을 넣게 되어 있으나, 이를 빼먹는? 경우가 종종 발생한다.

 

10. 아두이노 코딩을 잘하는 비결 :

 :  (#1) 책이나 교재 혹은 타인의 코드를 그대로 따라 해보고 동작이 되었다고 해서 바로 다음 과제로 넘어가지 마라! 

 에러 없이 동작된 코드를 놓고, 궁금한 부분을 이리저리 만저보면서 변경해보는 실험들을 스스로 충분히 해보아야 한다. 대부분의 경우 동작만 성공한 것이지 특정 코드부분을 이해하지 못한채 새로운 코드를 학습하게 되기 때문이다. 물론 여러번 해봐도 완벽히 이해되지 않을 때는 우선 넘어가도 좋다.  이럴때는 나중에 다시 이해할 수 있는 기회가 생긴다. 

 

   (#2)  아두이노 공부를 하면서 닥쳐오는 수많은 에러에 스트레스를 받지 마라~!  

   근력운동할 때 괜시리 무겁고 버거운 기구를 드는게 아니듯, 발생되는 각종 다양한 에러를 경험하고 찾아내는 과정 속에서 여러분의 코딩 근력이 형성된다.   코딩을 배울 때 에러 경험을 많이 하면 할 수록 좋다. 경험하고 학습된 에러는 이후 잘 반복되지 않으며, 경험으로 비추어 쉽게 찾아 낼 수 있기 때문이다.   

반응형