본문 바로가기
코딩/아두이노

[아두이노 강좌] 예제로 배우는 아두이노 #3 analogRead()사용법

by DIYver 2020. 3. 25.

<목표>

 

- digitalRead() 함수를 이용하여 아날로그 센서를 사용할 때, 아두이노에서 센서값을 읽는 것을 수행 한다.


<준비물>

 

- 아두이노(나도, 우노, 메가), 시리얼 통신 케이블, 포텐시오미터(가변저항), 브레드보드

 

아두이노 우노 / 시리얼 통신 케이블 / 포텐시오미터 / 브레드보드


<회로도>

 

 


<코드>

 

void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
}

// the loop routine runs over and over again forever:
void loop() {
  // read the input on analog pin 0:
  int sensorValue = analogRead(A0);
  // print out the value you read:
  Serial.println(sensorValue);
  delay(1);        // delay in between reads for stability
}

코드는 아두이노 - 파일 - 예제 - 01.Basics - AnalogReadSerial  의 예제 파일과 동일 합니다.

예제파일을 쓰셔도 되고, 위의 코드를 복사하여 붙여넣으셔도 됩니다.


<실행 결과>

 

코드를 업로드하고, 시리얼 모니터를 확인해 본다.

 

1ms(0.001)마다 시리얼 모니터에서 센서 데이터 값이 갱신되며 출력된다.

포텐시오미터를 돌리면 저항값이 변하게 되고,

그에 해당하는 전압값을 analogRead() 함수를 통해서 읽게 되는 것이다.

 

아두이노 코드 중 새로운 함수를 살펴 보자면

analogRead( pin_number ) : pin_number 에 해당하는 핀의 전압 상태를 읽는다. 0~5V 까지 읽으며, 0~1023으로 변환하여 변수에 저장한다.

A0 : 아두이노의 analog pin 들 중에서 0번핀을 뜻한다.

 

만약 포텐시오미터0 옴을 띄고 있을 때에는, 센서 선으로 전류가 전부 흐르므로 5V가 그대로 읽힐 것이고,

이때, 센서 데이터는 1023 으로 읽힌다.

포텐시오미터가 저항을 최대로 띄고 있을 때에는 센서 선으로 전류가 흐를 수 없으므로, 전압이 0이 된다.

 

즉 0V 일 때에는 센서값이 0 이고,

5V 일 때에는 센서값이 1023 이다.

0부터 1023 까지의 숫자로 전압을 표시한다.

 

이를 바탕으로 코드의 내용을 살펴보면

 

setup 에서

시리얼을 사용하는데, 보레이트(baud rate)를 9600 으로 한다.

loop 에서

sensorValue 라는 변수에 A0 핀에서 읽히는 전압값을 읽어 0~1023 사이의 값으로 저장한다.

시리얼 모니터에 A0 핀에 해당하는 센서값을 출력한다.

 

따라서 변화하는  센서 데이터를 매우 빠르게 시리얼 모니터에서 확인할 수 있다.

 

포텐시오미터 말고 cds(광센서), 수위측정센서 등을 이용할 때 사용하는 함수가 analogRead() 이다.


※ 궁금하시거나 질문사항이 있으시면 댓글로 작성해주시면 답변해 드릴 수 있는 부분에서 친절히 답변드리겠습니다!

 

 

 

댓글