5장. 가변저항을 이용하여 LED 밝기 조절하기

来自Microduino Wikipedia
跳转至: 导航搜索
Language English

목표

이전 장에서 버튼을 사용해서 LED 제어를 위한 PWM 신호를 생성해 봤다. 이번 장에서는 LED 밝기를 제어하기 위해 정밀 가변정항을 사용하는 방법에 대해 알아본다. 두장에서 다른 것은 버튼을 이용한 방법은 '0'과 '1'의 디지털 신호를 이용하여 제어하므로 신호가 변할때 마다 5단계씩 LED의 밝기 변화했다. 가변저항은 아날로그 전압을 이용하여 PWM을 생성하므로 상태의 값이 순차적으로 변하므로 LED의 밝기를 부드럽게 변화시킬수 있는 반면 버튼을 사용하게 되면 버튼의 채터링을 고려해야 한다.

부품

회로도

Lesson 5-schematic.jpg

연결방법은 PWM 출력신호핀에 LED를 연결하고, 가변저항은 아날록 입력 포트 A0 ~ A5에 연결한다. 아날로그 입력포트는 0 ~ 5V의 전압을 측정하고 0 ~ 1024의 값으로 변환한다. 전압변화의 측정 정밀도는 비교적 높은 편이다. 가변저항은 정밀 선형 권선가변저항기를 사용하는 편이 좋으며, 가격이 싼 비선형 가변저항은 좋은 전기적 특성을 가지고 있지 못하다. 수치편차는 LED 플레슁의 원인이 되며, 저항이 비선형적으로 변하면, 밝기 변화는 분명하지 못하고 버튼 디버와 같이 계층적인 변화를 만들기 쉽다.

프로그램

void setup()
{
  pinMode(3,OUTPUT);                   // PWM 출력포트를 선택한다.
}
void loop()
{
  int val= analogRead(A0);             // 아날로그 입력포트 A0에서 값을 읽는 함수(전압범위 0-5V,변환값은 0-1204)
  val = map(val, 0, 1023, 0, 255);    // 아날로그 값(0~1024)을 맵핑값(0~255)하는 함수,PWM의 최대값은 255이다.
  analogWrite(3, val);                 // PWM 포트 D3로 'val' 값을 출력
  //analogWrite(11,val/4);             // PWM 최대값은 255, 아날로그 값은 4로 나눈 값이다. The max PWM value is 255,so the analog value is divided by 4.
}

map() 함수

  • 기능:임의의 데이터를 다른 범위로 맵핑하는 기능
  • 문법:map(value, fromLow, fromHigh, toLow, toHigh)
    • value:리턴값
    • fromLow: 데이터 하한값
    • fromHigh:데이터 상한값
    • toLow:맵핑되는 하한값
    • toHigh:맵핑되는 상한값

결과

가변저항을 돌리면 LED의 밝기가 부드럽게 변한다.

비디오