본문 바로가기

메이킹/아두이노

아날로그 핀 사용하기(가변저항 이용)

반응형

오늘은 아두이노 아날로그 신호 입출력에 대해 알아보겠습니다.

디지털 핀에서는 디지털 신호 입출력이 모두 가능했던 반면, 아날로그 신호는 입력과 출력이 서로 다른 핀을 사용합니다. 입력은 ANALOG IN 문구가 표시된 A0~A5 총 6개에서 가능하고, 출력은 디지털핀 숫자 옆에 '~'가 붙은 PWM핀에서 가능합니다.

아두이노 보드의 디지털핀과 아날로그 핀

 

PWM은 Pulse Width Modulation의 약자로 진동의 폭을 조절한다는 의미입니다. 다시 말하면 출력할 수 있는 전압값을 기준으로 이를 일정한 비율(duty)동안에는 High로 유지하고 나머지는 Low값으로 출력하여 아래와 같은 사각파의 출력을 만들어 낼수있다.

출처 : https://ko.wikipedia.org/wiki/%ED%8E%84%EC%8A%A4_%ED%8F%AD_%EB%B3%80%EC%A1%B0
 
Duty 10%단위로 펄스 폭 컨트롤의 경우

Duty 10%단위로 펄스 폭 컨트롤의 경우
출처 : https://ko.wikipedia.org/wiki/%ED%8E%84%EC%8A%A4_%ED%8F%AD_%EB%B3%80%EC%A1%B0

 

아두이노는 외부기기로부터 0~5V의 아날로그 신호를 입력받으면 0~1023의 값으로 인식합니다.

 

1) 가변저항으로 아날로그 신호 입력받기

준비물

- 아두이노 우노

- LED 소자 : 가장 일반적인원형라운드 LED를 준비합니다.

- 가변저항 : 3개의 핀과 회전부로 구성된 가변저항으로 양쪽 핀에 전원을 연결한 후 회전부를 돌리면 저항값에 의해 변형된 신호가 출력됩니다.

10k옴 가변저항

회로도

가변저항 연결하기

소스코드

int val=0;

void setup() {
  Serial.begin(9600);
}
 
void loop() {
  val=analogRead(A0); // 아날로그 A0에 입력되는 신호를 val에 저장
  Serial.println(val); //시리얼 모니터에 val출력
  delay(10);
}

 

2) 가변저항으로 LED 밝기 조절하기

회로도

소스코드

이제 가변저항으로 LED의 밝기를 조절해 보겠습니다.

int val=0;

void setup() {
  Serial.begin(9600);
  pinMode(9, OUTPUT);
}
 
void loop() {
  val=analogRead(A0)/4; // 아날로그 A0에 입력되는 신호를 val에 저장
  Serial.println(val); //시리얼 모니터에 val출력
  analogWrite(9, val);
}

 

소스코드에서 아날로그 입력값을 4로 나눠 준 이유는 아두이노의 아날로그 단자에서 읽어들인 가변저항의 입력값은 0~1024이지만 LED의 밝기 값은 0~255까지 출력할 수 있기 때문입니다.

반응형