준호씨의 블로그

Arduino - analogRead(0) 와 analogRead(A0) 는 같다 본문

메이커

Arduino - analogRead(0) 와 analogRead(A0) 는 같다

준호씨 2017. 7. 13. 00:25
반응형

http://junho85.pe.kr/620 에서 확인 했듯이

A0 는 14 이다.

#define PIN_A0   (14)
...
static const uint8_t A0 = PIN_A0;

그런데 많은 예제에서 A0 핀의 값을 읽을 때

analogRead(0)

을 쓰기도 하고

analogRead(A0)

을 쓰기도 한다.

공식홈페이지의 예제를 보아도 다음과 같이 analogPin 3 번을 A3 로 쓰지 않고 그냥 3 번을 썼다.

int analogPin = 3;     // potentiometer wiper (middle terminal) connected to analog pin 3
                       // outside leads to ground and +5V
int val = 0;           // variable to store the value read

void setup()
{
  Serial.begin(9600);          //  setup serial
}

void loop()
{
  val = analogRead(analogPin);    // read the input pin
  Serial.println(val);             // debug value
}

출처: https://www.arduino.cc/en/Reference/AnalogRead

아무튼, 결론 부터 말하면 둘은 같다.

https://github.com/arduino/Arduino/blob/2bfe164b9a5835e8cb6e194b928538a9093be333/hardware/arduino/avr/cores/arduino/wiring_analog.c 에서 다음과 같은 코드를 볼 수 있다.

if (pin >= 14) pin -= 14; // allow for channel or pin numbers

14 이상이면 14만큼 빼준다. (칩셋에 따라 좀 다르긴 하다)

결국 0 이나 A0 이나 같게 된다.

그럼 그냥 숫자를 쓰는게 좋을까 A0 같은 값을 쓰는게 좋을까? 아두이노 공식 예제는 그냥 숫자를 쓰고 있다. 어떤 방식을 선호한다는 이야기도 없다.

개인적으로는 A0 이 좀 더 가독성이 좋다고 생각해서 A0 이 좋다고 본다. 좀 더 관련 내용을 알게 되면 좀 더 보강 해 봐야 겠다.

반응형
Comments