본문 바로가기

아두이노

아두이노 / 아날로그 입력을 통해 LED 밝기 제어하기

설명

 

아날로그 신호는 아두이노 보드의 ~가 있는 핀을 사용하여 얻을 수 있다.

 

또한 아날로그 신호의 입력은 A0 ~ A5 를 통해 입력이 가능하다.

 

아날로그 신호의 입력은 5V 신호를 가변저항을 사용하여 가변적인 아날로그 신호를 A0로 입력한다.

 

아날로그 신호는 0 ~ 1023사이 값이며 이는 10비트를 사용하기 때문이다. 아날로그 출력은 ~5 포트를 사용한다.

 

구성된 회로는 다음과 같다.

 

회로

 

아날로그 신호를 통한 LED밝기 조절

 

코드

// C++ code
//
int value, value1; /// 아날로그 입력 값

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

void loop()
{
	value = analogRead(A0); /// A0를 통해 얻은 전압값을 0~1023으로 받음 10비트 사용
  	value1 = map(value, 0, 1023, 0, 255); /// 아날로그 출력은 255까지 8비트 사용함
  	analogWrite(5, value1);
  	
  	Serial.print("analog read : ");
  	Serial.print(value);
  
  	Serial.print("analog write: ");
  	Serial.println(value1);	
  
  	delay(50);
}

 

analogRead 함수는 0 ~ 1023 값으로 받으며 analogwrite로 가능한 범위는 0 ~ 255이다.

이에 map함수를 통해 0, 1023 의 범위 값을 0, 255범위로 정규화할 수 있다.

 

추가 설명

A0에는 0에서 5V 사이 값으로 입력된다. ATmega 명세에 따르면 AD컨버터는 10비트를 사용하므로 0 ~ 1023값을 받는다.

아날로그 출력을 위한 타이머는 8비트 이므로 0 ~ 255사이 값을 갖는다.

Serial 통신을 위해 세팅은 9600baud로 하여 읽은 아날로그 신호와 LED를 제어하기 위한 아날로그 신호의 값을 출력한다.