Back Ground

아두이노 - 아날로그제어 본문

아두이노

아두이노 - 아날로그제어

Back 2016. 6. 21. 11:23

1. 아두이노를 이용한 아날로그 제어


우리가 실생활에서 접하는 대부분의 입력신호들은 ON/OFF 형태의 디지털 신호보다는 연속적으로 변하는 아날로그 신호로 구성

제어 시스템에서 아날로그 신호를 받아들이고 제어하는 과정 중요

아두이노 보드의 아날로그 입력핀을 이용하여 입력을 받아들이거나 입력에 따라 출력을 제어

아두이노 보드의 아날로그 입력 핀

가변저항이나 센서 등의 외부 아날로그 신호를 A/D변환하여 0~1023범위의 값으로 읽어 들임

아두이노 보드의 아날로그 입력

UNO보드 아날로그 입력 핀 : A0~A5의 6개

Mega보드 아날로그 입력 핀 : A0~A15의 16개







2. 아날로그 입력 받아들이기


가변저항을 통하여 만들어진 0~+5V사이의 값을 아두이노 보드의 아날로그 입력 핀을 통하여 입력

시리얼통신으로 개발용PC의 시리얼 모니터에 표시




analogRead()함수 사용

-아두이노 보드의 아날로그 입력 핀을 통하여 외부로 부터 0~+5V사이의 값을 입력 받음

-digitalRead()함수를 사용하여 HIGH 또는 LOW의 디지털 신호 값을 받은 것과 유사

-입력된 값은 A/D 변환되어 0~1023 사이의 1byte 값으로 저장



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( )


가변저항 VR을 조정

analogRead()함수를 통하여 0~+5V사이의 값이 0~1023 사이의 1byte 값으로 변환되어 변수 "val"에 저장

시리얼 통신에 의하여 개발용 PC의 시리얼 모니터에 연속적으로 표시





2-1. 가변저항으로 LED의 발기 조절하기


가변저항으로 LED의 밝기를 제어

아두이노의 아날로그 입력 핀 A2에 가변저항을 연결

디지털 입출력 핀 8번에 LED 연결





LED의 밝기 LED-on 시간과 LED_off 시간을 조절하여 가능

이론적으로 LED-on 시간을 on/off가 반복되는 1주기에서 최대로 하면 가장 밝게 LED가 켜지고, 0으로 하면, LED는 꺼짐

Map( )함수

가변저항을 통하여 입력되는 값은 0~1023의 값이므로 이것을 0~100사이의 백분율로 변환할 필요

변환을 위하여 analogRead()함수를 통하여 읽어 들인 값을 변수 "val"에 저장

함수 "map(val, 0, 1023, 0, 100);" 사용

LED의 불을 키는 것은 디지털입출력 핀을 이용하므로 digitalWrite() 함수 사용






스케치


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( )





함 수 정 리






'아두이노' 카테고리의 다른 글

아두이노 - Piezo스피커02  (0) 2016.06.21
아두이노 - Piezo스피커  (0) 2016.06.21
아두이노 - 시리얼통신  (0) 2016.06.21
아두이노 - Fritzing사용하기  (0) 2016.06.21
아두이노 - LED깜빡이기  (0) 2016.06.21
Comments