본문 바로가기
만들기/아두이노

포텐셔미터(가변저항)으로 360도 서보모터 방향 속도 조절하기

by 훨훨날아 2022. 7. 14.

B10K를 이용하여 360도 회전하는 서보모터 컨트롤을 해보았습니다.

준비물

아두이노, 가변저항, 서보모터

전원과 신호선만 아두이노 우노에 잘 연결해주면된다. 서보모터의 신호는 PWM 디지털핀에 연결하고 가변저항신호는 아날로그핀에 연결해준다.

 

코팅

 

서보모터 라이브러리를 사용하여 서보모터를 작동시키고 map함수를 이용하여 아날로그값 0~1023을 서보모터가 작동하는 -170~170 사이값으로 지정해준다.

#include <Servo.h> // 아두이노 서보모터라이브러리 사용

int servoPin = 9; //서보모터 데이터케이블(주황)을 아두이노 9번 핀에 연결

Servo servo; // 서보모터를 servo 이름으로 정의

void setup (){
    servo.attach(servoPin);  // 서보모터를 아두이노와 연결
    Serial.begin(9600);     // Serial 통신을 설정합니다.
    while(!Serial);                                           
    Serial.println("Servo Connected"); // 시리얼통신이 정상적으로 연결되면 시리얼모니터에 Servo Connected 출력
    delay(1000);
}
 
void loop(){
  int b, c ;
  int val = analogRead(A5);   // 가변저항을 아날로그 A5에 연결하고 이를 'val'에 저장합니다
   b = map(val, 0, 1023, -170, 170);  //0~1023을 -170 ~ 170 로 맵핑
  Serial.print("Potentiometer/ servo angle: ");
  Serial.print(val);          // 시리얼 모니터로 가변저항 값을 출력합니다
  Serial.print(" / ");
  Serial.println(b);   

  servo.write(b); // b에 입력된 값을 서보모터 움직임 각도로 동작
  delay(100); // 현재 입력된 서보모터 각도값을 반복(PWM신호)
  
  


}

 

 

 

반응형