피지컬컴퓨팅/아두이노

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

오즈랩 2024. 3. 11. 12:50
반응형

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

디지털 핀에서는 디지털 신호 입출력이 모두 가능했던 반면, 아날로그 신호는 입력과 출력이 서로 다른 핀을 사용합니다. 입력은 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까지 출력할 수 있기 때문입니다.

반응형