가변저항 입력 제어

학습목표

1. 아두이노 보드의 아날로그 입력

2. VR을 통한 LED 제어

2.1 예제 1

2.1.1 하드웨어 구성

2.1.3 Sketch 프로그램

/*
  가변저항을 변화시키면 LED의 켜지고 꺼지는 간격이 변화
    - 가변저항 은 아두이노 보드의 아날로그 입력 A2에 연결
    - LED는 디지털입출력 핀 10번에 연결

*/

int analogPin = 2;  // 아날로그 핀 2

void setup() {
  pinMode(10, OUTPUT);  
}

void loop() {
  int  val = analogRead(analogPin); // A/D변환되어 0~1023 범위 값으로 변화 
  digitalWrite(10, HIGH);
  delay(val);                       // 시간지연이 0~1023 msec 범위에서 조절
  digitalWrite(10, LOW); 
  delay(val);                       // 시간지연이 0~1023 msec 범위에서 조절
}

2.2 예제 2

2.2.1 하드웨어 구성

2.2.2 map() 함수

2.2.3 Sketch 프로그램

/*
  가변저항으로 LED의 밝기를 조절
  - 가변저항을 통하여 입력되는 0~1023 범위의 값을 0~255범위의 값으로 변환
*/
int pwdOut = 5;
void setup() {
  pinMode(pwdOut, OUTPUT);  
}

void loop() {
  int val1 = analogRead(2); // 아날로그입력 2번을 통하여 입력된 전압값을
                            // 0~1023범위의 값으로 읽어 val1에 저장

  int val2 = map(val1, 0, 1023, 0, 255); // 0~1023범위의 val값을 0~255 범위로 변환
  
  analogWrite(pwdOut, val2);     // PWM 신호로 출력
  delay(20); 
}

3. 연습문제

  1. 예제 2 스케치 코드에서 LCD 화면에 두 변수 val1과 val2의 값을 출력하는 프로그램을 작성합니다.

  2. 가변저항(VR)를 가변시키면, 다음 그림과 같이 VR의 AD 변환값을 바탕으로 LED_0부터 LED_3까지 4개의 LED를 켜는 스케치를 작성해 보자.