아두이노의 ADC로 아날로그 값 읽기,analogRead ()

디지털이 있다면 아날로그도 있는 법입니다. 아두이노는 10비트의 ADC를 갖고 있는데 이를 읽는 함수인 analogRead()에 대한 설명입니다.

 

정의

지정된 아날로그 핀에서 값을 읽습니다. Arduino 보드에는 멀티 채널, 10 비트 아날로그-디지털 변환기가 포함되어 있습니다. 이것은 0과 작동 전압 (5V 또는 3.3V) 사이의 입력 전압을 0과 1023 사이의 정수 값으로 매핑한다는 것을 의미합니다. 예를 들어 Arduino UNO에서는 5 볼트 / 1024 단위 또는 단위당 0.0049V (4.9mV). 일부 Arduino 보드의 사용 가능한 핀, 작동 전압 및 최대 해상도는 아래 표를 참조하십시오.

 

ATmega 기반 보드 (UNO, Nano, Mini, Mega)에서는 아날로그 입력을 읽는 데 약 100 마이크로 초 (0.0001 초)가 걸리므로 최대 판독 속도는 초당 약 10,000 배입니다

 

 

사용 예

analogRead(pin)

 

매개변수 

pin: 읽을 아날로그 입력 핀의 이름 (대부분의 보드에서 A0 ~ A5, MKR 보드에서 A0 ~ A6, 미니 및 나노에서 A0 ~ A7, 메가에서 A0 ~ A15).

 

특이사항

핀의 아날로그 판독 값. 아날로그-디지털 변환기의 해상도 (10 비트의 경우 0-1023, 12 비트의 경우 0-4095)로 제한됩니다. 데이터 유형 : int.

 

예제 코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int val = 0;
int analogPin = A1;
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
 
 
}
 
void loop() {
  // put your main code here, to run repeatedly:
  
  
  val = analogRead(analogPin);
  Serial.print("입력 값:");
  Serial.println(val);
  delay(1000);
 
}
 

 

A1핀을 아날로그 입력으로 받고 그 측정값을 출력하는 예제입니다. 저는 5v와 3.3v를 인가해보았습니다.

 

 

10비트이기 때문에 분해성능은 1024인데 5V의 경우 1023, 3.3V의 경우 692~693이면 얼추 정확한 값을 읽는 것을 확인 할 수 있었습니다.

 

감사합니다.

댓글()