본문 바로가기

관리하지않음/아두이노

[아두이노] 가변저항 사용법 및 예제 - led, 스텝 모터​​​

아두이노에서 가변저항을 사용하기 위한 보드 구성 방법값을 읽어오는 방법을 정리했습니다.

그리고 가변저항으로 led 밝기 제어스텝 모터 속도 제어하는 방법도 간단하게 정리했습니다.

 

1. 보드 구성 방법

가변저항은 3개의 다리가 있습니다.

스위퍼가 앞을 본다고 가정하면, 3개의 다리를 순서대로 GND, A0, 5V 핀에 연결해주면 됩니다.

가변저항 보드 구성

가변 저항의 값을 AnalogREAD로 가져와야 하기 때문에, 무조건 A0~A5핀에 꽂아줘야합니다.

가변 저항 값은 0~1023 까지의 정수 값으로 표현됩니다.

 

실제로 구성한 모습입니다.

가변저항 아두이노 보드 구성

2. 가변 저항 값 읽어서 시리얼 모니터에 출력하기

int pin = A0;
 
void setup (){
  Serial.begin(9600);
}
 
void loop(){
  int data = analogRead(pin);
  Serial.println(data);
}

동작 영상입니다.

 

동작 영상

3. 가변저항으로 LED 밝기 제어하기

가변저항 값에 따라 LED 밝기를 제어하기 위해서는, analogWrite를 사용해서 아날로그 출력을 해야합니다.

더 자세하게 알고싶다면 아두이노 PWM 관련해서 공부해야하는데, 이번 포스팅에서는 패스하겠습니다.

analogWrite를 사용하려면 PWM 출력이 가능한 3, 5, 6, 9, 10,11번 핀을 사용해야 합니다.

PWM 출력이 가능한 핀에는 앞에 "~"가 있으니 참고해주세요.

 

가변저항 값을 0~255 사이 값이 되도록 만들어 주고, analogWrite 함수로 밝기를 제어합니다.

int pin = A0;
int led = 9;
 
void setup (){
  Serial.begin(9600);
  pinMode(led, OUTPUT);
}
 
void loop(){
  int data = analogRead(pin);
  analogWrite(led, data/4); // data값을 4로 나누어 0~1023 사이 값을 0~255으로 만든다.
  //Serial.println(analogRead(pin));
}

동작 영상입니다.

 

가변저항으로 led 밝기 제어

4. 가변 저항으로 스텝 모터 속도 제어하기

스텝 모터 제어를 위한 보드 구성은 아두이노 5V 스텝모터 제어하기 포스팅을 참고해주세요.

이전 포스팅 코드를 조금 변경해서, 가변 저항의 값에 따라 스텝 모터 속도가 달라지도록 만들었습니다.

가변저항으로 스텝모터 속도를 제어하기 위한 보드 구성

#include <Stepper.h> 
int IN1 = 2; //IN1은 2번 핀에 연결 
int IN2 = 3; //IN2는 3번 핀에 연결 
int IN3 = 4; //IN3는 4번 핀에 연결 
int IN4 = 5; //IN4는 5번 핀에 연결 
Stepper step1(2048, IN1, IN3, IN2, IN4);

int pin = A0;
 
void setup (){
  Serial.begin(9600);
}
 
void loop(){
  int data = analogRead(pin);
  int pd = map(data,0,1023,0,20); //0~1023 사이의 값을 0~20 사이의 값으로 매핑해준다.
  //Serial.println(pd);
  if(pd>0){
    step1.setSpeed(pd); //가변저항 값에 따라 speed 변경한다.
    step1.step(-100);
  }
  delay(1);
}

LED 밝기 제어 때는 가져온 가변저항 값을 그냥 4로 나누어 주었지만, 스텝 모터 속도를 제어하기 위해서는 0~20사이의 값으로 만들어줘야 했습니다. 그래서 map이라는 함수를 사용해서 0,1023의 값을 0,20사이의 값을 가지도록 만들어줬고, 그 값을 변수 pd에 저장했습니다.

 

동작 영상입니다.

 

동작 영상

잘못된 내용이 있다면 언제든지 댓글이나 메일로 알려주시면 감사하겠습니다.

이 포스팅이 도움이 되었다면 공감 부탁드립니다.

궁금한 점은 언제든지 댓글 남겨주시면 답변해드리겠습니다:D