초급 예제

누구나 쉽게 따라해볼 수 있는 쉬운 예제들입니다. 가볍게 도전~!

가변저항 x LED-밝기조절

2015-01-16 14:31:11

가변저항이란?


 

가변저항(Potentiometer)이란 사용자가 직접 저항값을 임의로 바꿀수 있는 저항기를 말합니다.

흔히 소리의 크기를 조절할 때 볼륨(Volume)을 조절한다 부르는데, 이때 이 볼륨을 조절할 수 있는 부품이 가변저항입니다.

가변저항은 사용하는 저항체의 종류에 따라 다양하며, 회전축을 중심으로 전극을 움직이거나, 좌우로 전극을 움직이는 방식으로 저항값에 변화를 줍니다.

가변저항은 가전 제품부터 산업용 제품에 이르기까지 폭넓은 시장에서 활용되고 있습니다.



 

 

 

 

가변저항 사용방법


 

이 예제에서 사용된 가변저항은 아래 그림과 같이 1번 단자와 3번 단자에 걸처 전체 저항이 연결되어 있고, 그 위에 2번 단자와 연결된 스위퍼 (sweeper)의 위치에 따라, 저항 값이 변하게 합니다. 

 

가변저항의 노브를 돌리면 1번 단자와 2번 단자 사이의 저항과, 2번 단자와 3번 단자 사이의 저항값이 각각의 길이에 비례하여 변하게 됩니다. 스위퍼의 위치에 따라 2번과 3번의 저항 값이 변하면, 스위퍼에 연결된 2번단자에 걸리는 전압도 변하게 됩니다. 즉, 양쪽 저항의 크기에 따라 전압분배가 이루어지는 것입니다. 

 

이 예제에서는 2번 단자에 걸리는 전압을 오렌지보드의 아날로그 입력값으로 받아 LED의 밝기를 조절합니다.

 

저항에 대한 자세한 설명은 2.4 저항의 용도를 참고합니다. 
 

 

 

 

 

부품 목록

NO 부품명 수량 상세설명
 1 오렌지 보드  
가변저항  
LED   
4 330Ω 저항 1  
브레드 보드   
점퍼 케이블  7  

 

부품명 오렌지 보드 가변저항 LED 330Ω 저항 브레드 보드 점퍼 케이블
파트

 

 

 

 

 

하드웨어 making


 
1. 오렌지보드의  5V핀을 브레드보드의 + 버스에 연결합니다.
2. 오렌지보드의 GND핀을 브레드보드의 - 버스에 연결합니다. 
3. 가변저항을 그림과 같이 세로로 꽂습니다.
4. LED를 애노드(긴 단자)가 아래쪽으로 향하게하여 꽂습니다.
5. LED의 애노드가 연결된 행에 330Ω 저항을 연결합니다.
6. 가변저항의 하단 단자를 + 버스에 연결합니다.
7. 가변저항의 가운데 단자를 오렌지보드 A1번핀에 연결합니다.
8. 가변저항의 상단 단자를 - 버스에 연결합니다. 
9. LED 애노드와 연결된 저항의 반대 쪽을 오렌지보드 3번핀에 연결합니다. 
10. LED 캐소드(짧은)를 - 버스에 연결합니다.


 

 

 

 

소프트웨어 coding


 

  1. /*
  2.   제목    : 가변저항으로 LED 밝기 조절하기
  3.   내용   : 가변저항을 좌우로 돌려 LED의 밝기를 조절 해봅시다.
  4. */
  5.  
  6. // 가변저항을 A1핀으로 선언하고 LED를 3번 핀으로 선언합니다.
  7. int potentiometer = A1;
  8. int led = 3;
  9.  
  10. // 실행시 가장 먼저 호출되는 함수이며, 최초 1회만 실행됩니다.
  11. // 변수를 선언하거나 초기화를 위한 코드를 포함합니다.
  12. void setup() {
  13.   // 가변저항의 출력값을 확인하기 위하여 시리얼 통신을 설정합니다. (전송속도 9600bps)
  14.   Serial.begin(9600);
  15.   // LED가 연결된 핀을 OUTPUT으로 설정합니다.
  16.   pinMode(led, OUTPUT);
  17. }
  18.  
  19. // setup() 함수가 호출된 이후, loop() 함수가 호출되며,
  20. // 블록 안의 코드를 무한히 반복 실행됩니다.
  21. void loop() {
  22.   // 가변저항으로 측정된 값을 읽습니다.
  23.   // 가변저항으로부터 입력되어지는 전압의 크기(0~5V)에 따라 0~1023 범위의 값으로 변환되어 반환합니다.
  24.   int pmValue = analogRead(potentiometer);
  25.  
  26.   // 측정된 밝기 값를 시리얼 모니터에 출력합니다.
  27.   Serial.print("potentiometer = ");
  28.   Serial.println(pmValue);
  29.  
  30.   // 가변저항으로부터 측정된 값 (0~1023)을 아날로그 출력 값 (0~255) 범위로 변환합니다.
  31.   pmValue = map(pmValue, 0, 1023, 0, 255);
  32.  
  33.   // LED를 켭니다.
  34.   analogWrite(led, pmValue);
  35.   // 0.1초 동안 대기합니다.
  36.   delay(100);
  37. }

 

 

 

 

 

코드 실행

 

위 코드에서는 이전 단계(조도센서로 어두워지면 LED켜기)에서 사용한 map함수를 사용합니다.

가변저항의 역할과 조도센서의 역할이 유사하기 때문에 가변저항에서 출력되는 값을 0~255사이의 LED출력값으로 변경하고, 그에 맞게 LED를 켭니다.

 

 

 

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

가변저항, LED, 아두이노, 오렌지보드

성혁학생 2017-10-26 09:22:05

정말로 잘 보고있습니다. 그런데.. 왜 저는 밝기조절이 안되고
LED의 on/off만 작동하는 걸까요?

성혁학생 2017-10-26 09:35:25

아 알아냈습니다! 제가 포트를 PWM이 가능한 ~에 연결하지 않고 일반 포트에 연결했었어요!