에듀이노-코딩교육 전문 쇼핑몰 에듀이노-코딩교육 전문 쇼핑몰

학교, 공공기관이라면 후불결제하세요!

 
현재 위치
  1. 게시판
  2. 묻고답하기

묻고답하기

상품 게시판 상세
제목 기술문의 때문에 전화드렸었습니다.
작성자 에듀이노 (ip:)
  • 작성일 2018-12-03
  • 추천 추천하기
  • 조회수 38
안녕하세요 에듀이노 입니다.

문의하신 제품은 교환접수를 통해 불량유무 확인이 가능한 점 참고부탁드립니다.

감사합니다 ^^


[ Original Message ]

각 서보모터 아두이노로 연결해서 소스 코드 통해서 업로드 했으나

PWM 제어가 전혀 안 되는 것 같습니다. 파형의 시간을 측정해야 하는데

그게 아니라 on만 되면 전류가 흘러서 한 쪽방향으로 계속해서 돌아갑니다.

아래에 미니멈과 맥시멈의 포지션 값을 조절해도 똑같은 방향으로만 계속 돌아가며 노이즈 생깁니다.

#include <Servo.h> 

Servo servo;

int servoPin = 9;
int current_angle = 0; // current servo position in degrees

int centerServo = 90;  // center servo position
int min_angle     =  55;  // minimum servo position
int max_angle     =  125; // maximum servo position
int turnRate     =  5;  // servo turn rate increment (larger value, faster rate)  

void setup() {
  Serial.begin(9600);
  Serial.println("Robot Arm Control");
  Serial.println("Press a or s to move, spacebar to center");
  Serial.println();
  
  servo.attach(servoPin);
  current_angle = centerServo;
  servo.write(current_angle);
}

void loop()
{
  int angle = current_angle;
  
  if (Serial.available() > 0) {
    char command = Serial.read();

    // User contro:   ASCII 'a' == 97,   ASCII 's' == 115  
    if (command == 97) { angle -= turnRate; }
    if (command == 115) { angle += turnRate; }
    if (command == 32) { angle = centerServo; }

    // Check min, max
    if (angle > max_angle) { angle = max_angle; }
    else if (angle < min_angle) { angle = min_angle; }

    Serial.print("Angle = ");
    Serial.print(angle);
    Serial.println();
  }
  
  if(angle != current_angle) {
    moveServo(angle);
  }
}

// Move servo to target angle
void moveServo(int target_angle) {
  int step_angle = 1;
  if(target_angle < current_angle) { step_angle = -1; }
  
  // This code makes smooth movement
  for(int i = current_angle; i != target_angle; i+=step_angle) {
    //if((target_angle - i) < step_angle && (target_angle - i) > step_angle * -1)  // close to target position, break this loop
    //  break;
    
    servo.write(i);
    delay(15);
  }
  current_angle = target_angle;
}
평점 0점
첨부파일
비밀번호 삭제하려면 비밀번호를 입력하세요.
댓글 수정

비밀번호 :

수정 취소

/ byte

비밀번호 : 확인 취소

댓글 입력

댓글달기이름 :비밀번호 : 관리자답변보기

확인

/ byte

왼쪽의 문자를 공백없이 입력하세요.(대소문자구분)

에게만 댓글 작성 권한이 있습니다.

댓글 입력

댓글달기이름 :비밀번호 :

확인

/ byte

왼쪽의 문자를 공백없이 입력하세요.(대소문자구분)

에게만 댓글 작성 권한이 있습니다.

«
»