개발 관련/프로젝트

Arduino 아날로그 핀의 디지털 핀 사용

by 소서리스25 2023. 12. 21.
반응형

지난번 아두이노 테스트에서 디지털 핀이 부족하다고 판단되어 방법이 있는지 찾아보았다. 생각보다 금방 해결책이 나왔는데, 아두이노에서 아날로그 핀을 디지털 핀으로도 사용할 수 있다고 한다..

왜 몰랐지?...

사실 이제까지 아두이노를 활용한 여러 프로젝트들을 진행하면서 지금처럼 많은 핀을 사용한 적이 없었다. 딱 필요한 몇 가지 핀들만 사용해서 진행했다. 

 

아래의 아두이노 공식 사이트에 공개된 아두이노 우노 R3의 핀 맵을 확인 해 보면 바로 알 수 있다.!!!!

(오래 사용했지만 이제 알게 되었다는... @_@;; )

아두이노 우노 R3 핀 맵
아두이노 우노 R3 핀 맵 (출처 : 아두이노 공식 사이트)

 

그리고 주력으로 사용할 아두이노 나노의 핀맵도 확인해 보면 다음과 같다.

역시 우노와 동일한 핀의 역할을 하는 것을 알 수 있다.

아두이노 나노 핀 맵 (출처 : 아두이노 공식 사이트)

 

즉, 아두이노의 아날로그 핀은 A0 ~ A5까지로 정해져 있다.

이 아날로그를 디지털 핀으로 사용하게 되면 D14 ~ D19번이 되게 된다.

 

그러면 실질적으로 핀이 인식하는지 살펴 보았다. 테스트는 적외선 센서를 활용하였으며 아날로그로 읽도록 하였다.

아래의 코드는 신호선을 아날로그 핀 A0에 할당하였다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#define irPin A0
 
void setup() 
{
  pinMode(irPin, INPUT);
  
  Serial.begin(9600);
  delay(500);
}
 
void loop() 
{
  float _readir = analogRead(irPin); // digitalRead(irPin);
  Serial.println(_readir);
  
  //if(Serial.available())
  //{    
  //}  
  
  delay(1000);
}
 
cs

 

 

코드 업로드 후 적외선 센서에 물체를 근접하게 되면 낮은 수치가 나오고, 떨어지게 되면 큰 수치가 아래와 같이 찍히게 된다.

아날로그로 인식한 경우
아날로그로 인식한 경우

 

다음은 앞에서 언급한 디지털 번호 14로 인식시켰을 경우로 디지털로 읽었을 때를 테스트하였다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#define irPin 14
 
void setup() 
{
  pinMode(irPin, INPUT);
  
  Serial.begin(9600);
  delay(500);
}
 
void loop() 
{
  float _readir = digitalRead(irPin);
  Serial.println(_readir);
  
  //if(Serial.available())
  //{    
  //}  
  
  delay(1000);
}
cs

 

코드 업로드 후 같은 방식으로 읽어 드린 값을 확인해 보면 다음과 같다.

디지털 핀으로 읽었을 경우
디지털 핀으로 읽었을 경우

 

이와 같이 아날로그 핀 번호 A0는 디지털 핀 번호 14로 활용할 수 있음을 확인했다.

일단 현재 진행으로 볼때 핀 수가 부족하지는 않을 것 같다. 다만, PWM 제어가 필요할 경우는 고려해야 한다.

반응형

댓글