가변저항이란?
'저항값을 바꿀 수 있는 저항기' 를 말합니다.
요렇게 생긴거를 의미합니다.
- 스피커 볼륨
- 전등 밝기
등에 많이 사용됩니다.
사용법은
이런식으로 양끝에 5V 와 접지를 이어주고
가운대는 아날로그 입력을 꼳아줍니다.
가변저항을 조절하여 출력되는 값을 A0으로 보내주어 값을 가져오는 방식입니다.
우선 가변저항 없이 기본소스를 입력하여 어떠한 변화가 오는지 알아봅시다.
// 샘플 소스 1 // LED 밝기 조절하기 ( 가변저항 X ) int led = 9 int brightness = 0; int fadeAmount = 5; void setup() { pinMode(led, OUTPUT); } void loop() { analogWrite(led, brightness); brightness = brightness + fadeAmount; if (brightness == 0 || brightness == 255) { fadeAmount = -fadeAmount ; } delay(30); }
이런식으로 소스를 구현하고 led핀을 9번으로 넣어줍니다. 출력을 아날로그를 출력하며 0~255까지 5씩 밝기를 조절해줍니다.
밝았다가 어두워졌다가 하는 모습을 볼 수 있습니다.
그럼 가변저항을 이용한 소스를 보도록 하겠습니다.
우선 회로를 보시면
아까 위의 그림처럼 가변저항을 설정해 줍니다.
그리고 3 5 6 9 10 11 에 각각 LED를 연결해 저항 접지까지 연결해줍니다.
잘모르시는분은 1일차를 참고해주세요
// 샘플소스 2 // 가변저항을 이용하여 LED를 제어 1 int sensorPin = A0; // select the input pin for the potentiometer int sensorValue = 0; // variable to store the value coming from the sensor int brightness = 0; int brightness1 = 50; int brightness2 = 100; int brightness3 = 150; int brightness4 = 200; int brightness5 = 250; // 각각의 밝기 초기값을 설정 int fadeAmount = 5; int fadeAmount1 = 5; int fadeAmount2 = 5; int fadeAmount3 = 5; int fadeAmount4 = 5; int fadeAmount5 = 5; //가변값을 각각설정 void setup() { pinMode(3, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(9, OUTPUT); pinMode(10, OUTPUT); pinMode(11, OUTPUT); //아날로그 출력핀을 설정 } void loop() { sensorValue = analogRead(sensorPin); analogWrite(3, brightness); analogWrite(5, brightness1); analogWrite(6, brightness2); analogWrite(9, brightness3); analogWrite(10, brightness4); analogWrite(11, brightness5); brightness = brightness + fadeAmount; brightness1 = brightness1 + fadeAmount1; brightness2 = brightness2 + fadeAmount2; brightness3 = brightness3 + fadeAmount3; brightness4 = brightness4 + fadeAmount4; brightness5 = brightness5 + fadeAmount5; if (brightness == 0 || brightness == 255) { fadeAmount = -fadeAmount ; } if (brightness1 == 0 || brightness1 == 255) { fadeAmount1 = -fadeAmount1 ; } if (brightness2 == 0 || brightness2 == 255) { fadeAmount2 = -fadeAmount2 ; } if (brightness3 == 0 || brightness3 == 255) { fadeAmount3 = -fadeAmount3 ; } if (brightness4 == 0 || brightness4 == 255) { fadeAmount4 = -fadeAmount4 ; } if (brightness5 == 0 || brightness5 == 255) { fadeAmount5 = -fadeAmount5 ; } delay(sensorValue); //딜레이시간을 수신받는 가변저항을 이용하여 설정 }
이런식으로 설정해줍니다.
포트를 A0-6 을 설정하지않고 디지털 포트를 설정한 이유는
A0-6은 아날로그 수신이 가능한포트이며
디지털포트중 ~ 물결표시가 적힌 포트는 아날로그 출력이 가능한 포트입니다.
이런식으로 설정을 해주면
마지막소스는 저항에따라 켜는 갯수를 정하는것입니다. 회로는 똑같고 프로그램만 변경합니다.
int sensorPin = A0; // select the input pin for the potentiometer int ledPin = 11; // select the pin for the LED int sensorValue = 0; // variable to store the value coming from the sensor void setup() { // declare the ledPin as an OUTPUT: pinMode(3, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(9, OUTPUT); pinMode(10, OUTPUT); pinMode(11, OUTPUT); } void loop() { sensorValue = analogRead(sensorPin); if(sensorValue == 0 ){ digitalWrite(3, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); } else if(sensorValue > 0 && sensorValue <= 40){ digitalWrite(3 , HIGH); digitalWrite(5 , LOW); digitalWrite(6 , LOW); digitalWrite(9 , LOW); digitalWrite(10 , LOW); digitalWrite(11, LOW); } else if(sensorValue > 40 && sensorValue <= 80){ digitalWrite(3, HIGH); digitalWrite(5, HIGH); digitalWrite(6, LOW); digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); } else if(sensorValue > 80 && sensorValue <= 120){ digitalWrite(3, HIGH); digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); } else if(sensorValue > 120 && sensorValue <= 160){ digitalWrite(3, HIGH); digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(9, HIGH); digitalWrite(10, LOW); digitalWrite(11, LOW); } else if(sensorValue > 160 && sensorValue <= 200){ digitalWrite(3, HIGH); digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, LOW); } else{ digitalWrite(3, HIGH); digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); } delay(30); //digitalWrite(ledPin, LOW);
이런식으로 받는 값( 0 - 255 ) 를 감지해서 LED를 키는법입니다.
아날로그출력이아니라 디지털출력 그대로 사용하고 받는 값에 따라 갯수만 변경한 것입니다.
오늘은여기까지입니다.
확실히 내머리속에있는대 이걸꺼내는건 어렵내요.
ㅠㅠ
모르시는거 있으시면 꼭 리플달아주세요!!
'Programming > Arduino' 카테고리의 다른 글
초음파 센서를 이용한 차량 후방 감지기 구현 (2) | 2013.01.22 |
---|---|
74HC595를 이용한 3핀->8핀 만들기 (1) | 2013.01.17 |
3일차 아두이노 피아노 만들기!!! (2) | 2013.01.11 |
보너스 - LED CUBE (0) | 2013.01.09 |
2일차 Button + (심화) LED 여러게 다루기. (동영상첨부) (0) | 2013.01.08 |