Presentation is loading. Please wait.

Presentation is loading. Please wait.

8. 아두이노를 이용한 아날로그 제어 - 스마트 폰으로 제어하는 아두이노 -.

Similar presentations


Presentation on theme: "8. 아두이노를 이용한 아날로그 제어 - 스마트 폰으로 제어하는 아두이노 -."— Presentation transcript:

1 8. 아두이노를 이용한 아날로그 제어 - 스마트 폰으로 제어하는 아두이노 -

2 강의 개요 우리가 실생활에서 접하는 대부분의 입력신호들은 ON/OFF 형태의 디지털 신호보다는 연속적으로 변하는 아날로그 신호로 구성 제어 시스템에서 아날로그 신호를 받아들이고 제어하는 과정 중요 이장에서는 아두이노 보드의 아날로그 입력핀을 이용하여 입력을 받아들이거나 입력에 따라 출력을 제어 방법학습

3 8.1 아날로그 입력 제어 : LED와 VR 제어 아두이노 보드의 아날로그 입력 핀 아두이노 보드의 아날로그 입력
가변저항이나 센서 등의 외부 아날로그 신호를 A/D변환하여 0~1023범위의 값으로 읽어 들임 아두이노 보드의 아날로그 입력 UNO보드 아날로그 입력 핀 : A0~A5의 6개 Mega보드 아날로그 입력 핀 : A0~A15의 16개

4 예제 8.1 아날로그 입력 받아들이기 가변저항을 통하여 만들어진 0~+5V사이의 값을 아두이노 보드의 아날로그 입력 핀을 통하여 입력 시리얼통신으로 개발용PC의 시리얼 모니터에 표시

5 예제 8.1의 주요개념 analogRead()함수 사용
아두이노 보드의 아날로그 입력 핀을 통하여 외부로 부터 0~+5V사이의 값을 입력 받음 digitalRead()함수를 사용하여 HIGH 또는 LOW의 디지털 신호 값을 받은 것과 유사 입력된 값은 A/D 변환되어 0~1023 사이의 1byte 값으로 저장

6 예제 8.1의 스케치 const int analogPin = 2; void setup() { setup( ) 시작
Serial.begin(9600); 시리얼 통신을 위한 전송속도 9600 설정 } setup( ) 끝 void loop() { loop( ) 시작 int val; val = analogRead(analogPin); 아날로그 입력핀 2번을 통하여 입력된 전압값을 0~1023사이의 값으로 읽어 val에 저장 Serial.println(val); 시리얼 통신을 통하여 모니터에 val 값 출력 loop( ) 끝

7 예제 8.1의 실행 가변저항 VR을 조정 analogRead()함수를 통하여 0~+5V사이의 값이 0~1023 사이의 1byte 값으로 변환되어 변수 "val"에 저장 시리얼 통신에 의하여 개발용 PC의 시리얼 모니터에 연속적으로 표시

8 예제 8.2 가변저항으로 LED의 발기 조절하기 가변저항으로 LED의 밝기를 제어
아두이노의 아날로그 입력 핀 A2에 가변저항을 연결 디지털 입출력 핀 8번에 LED 연결

9 예제 8.2의 주요개념 LED의 밝기 LED-on 시간과 LED_off 시간을 조절하여 가능 Map( )함수
이론적으로 LED-on 시간을 on/off가 반복되는 1주기에서 최대로 하면 가장 밝게 LED가 켜지고, 0으로 하면, LED는 꺼짐 Map( )함수 가변저항을 통하여 입력되는 값은 0~1023의 값이므로 이것을 0~100사이의 백분율로 변환할 필요 변환을 위하여 analogRead()함수를 통하여 읽어 들인 값을 변수 "val"에 저장 함수 "map(val, 0, 1023, 0, 100);" 사용 LED의 불을 키는 것은 디지털입출력 핀을 이용하므로 digitalWrite() 함수 사용

10 예제 8.2의 스케치 const int analogPin = 2; int digitalPin = 8;
void setup() { setup( ) 시작 pinMode(digitalPin, OUTPUT); 디지털입출력 핀 8번을 출력모드로 설정 } setup( ) 끝 void loop() { loop( ) 시작 int val; int percent; 변수 선언 val = analogRead(analogPin); 아날로그 입력핀 2번을 통하여 입력된 전압값을 0~1023사이의 값으로 읽어 val에 저장 percent = map(val,0,1023,0,100); 0~1023범위의 val값을 0~100사이의 백분율로 변환하여 percent에 저장 digitalWrite(digitalPin, HIGH); delay(percent); digitalWrite(digitalPin, LOW); delay(100 - percent); 아날로그 입력핀 2번을 통하여 입력된 전압값에 따라 PWM 형태로 LED 밝기 표현 loop( ) 끝

11 연습과제 가변저항(VR)를 가변시키면, 다음 그림과 같이 값을 AD 변환하여 LED 0부터 3까지 4개의 LED를 값에 따라 켜지는 스케치를 작성해 보자. 가변저항(VR)를 가변시켜 입력된 값을 AD 변환하여 10단계로 나누어 FND에 0부터 9까지 숫자로 나타나게 하는 스케치를 만들어 보자.

12 함수정리 analogRead(pin_Number);
아두이노 보도의 아날로그 입력으로 선언된 핀을 통하여 0~1023사이의 값을 읽는 명령어 -pin_Number : 아날로그 입력핀의 번호 (예) val = analogRead(2); 아날로그 입력핀2를 통해 읽은 값을 변수 val에 저장 map(value, a1, a2, b1, b2); a1~a2사이의 value값을 b1~b2범위의 값으로 변환하는 명령어 -value : a1~a2사이의 정수형 값 (예) percent = map(val, 0, 1023, 0, 100); 0~1023범위의 val값을 0~100사이의 백분율로 변환하여 percent에 저장

13 함수정리 switch-case 변수 x의 bitPosition번째의 비트에 value의 값(0 또는 1)을 설정
-pin-munber : 디지털출력으로 선언된 핀의 번호 -state : HIGH 또는 '1', LOW 또는 '0' (예) digitalWrite(10, HIGH); 핀10에 ‘1’ 출력 digitalWrite(10, ‘1’); 핀10에 ‘1’ 출력 bitWrite(x, bitPosition, value); 변수 x의 bitPosition번째의 비트에 value의 값(0 또는 1)을 설정 (예) bitWrite(sw, 3, "HIGH"); 핀10에 ‘1’ 출력 digitalWrite(10, ‘1’); 핀10에 ‘1’ 출력


Download ppt "8. 아두이노를 이용한 아날로그 제어 - 스마트 폰으로 제어하는 아두이노 -."

Similar presentations


Ads by Google