?>

Hard Copy World

HCW

Q&A

Home > Forum >

Q&A

질문 | 아두이노 서보모터 각도 조절 작업 문의

페이지 정보

작성자 스누피 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일18-10-27 09:23 조회38회 댓글1건

본문

안녕하세요? 서보모터 각도 조절 작업중 문의드릴게 있어서요.
아래 코드 소스 보시면 u, d 입력하면 각도 조절하게끔 되어 있는데, 시리얼 모니터에 u, d를 입력하면 서보모터에서 각도가 움직이긴하는데... 모니터 상에 계산값 뜬뒤 그 밑에 wrong character!! 라고 뜨던데.. 문자열 입력은 맞게 했는데, 왜 뜨는지 모르겠습니다.. 답변 부탁드릴께요.
예시
Enter the u or d
u = angle + 15
d = angle - 15

-15 75
-15 60
-15 45
wrong character!!
-15 30
wrong character!!
-15 15
wrong character!!


코드 소스
#include <Servo.h>    // 서보모터 라이브러리

Servo servo;    // 서보모터 사용을 위한 객체 생성

int motor = 2;  // 서보모터의 핀
int angle = 90; // 서보모터 초기 각도 값

void setup() {
  servo.attach(motor);  // 서보모터 연결
  Serial.begin(9600);  // 시리얼 모니터 시작
   
  Serial.println("Enter the u or d"); // u 또는 d키 입력하기
  Serial.println("u = angle + 15");  // u를 누른다면 현재 각도값에서 +15도
  Serial.println("d = angle - 15\n");  // d를 누른다면 현재 각도값에서 -15도
}

void loop() {
  if(Serial.available())  // 시리얼모니터가 사용가능할 때
  {
    char input = Serial.read(); // 문자 입력받기
   
    if(input == 'u')    // u 키를 누를 때
    {
      Serial.print("+15");  // '+15'를 시리얼 모니터에 출력
      for(int i = 0; i < 15; i++)  // 현재 각도에서 15도 더해주기
      {
        angle = angle + 1; 
        if(angle >= 180)
          angle = 180;
                   
        servo.write(angle);
        delay(10);
      }
      Serial.print("\t\t");
      Serial.println(angle);  // 현재 각도 출력
    }
    else if(input == 'd')  // 'd'키를 입력했을 때
    {
      Serial.print("\t-15\t");  // '-15'라고 출력
      for(int i = 0 ; i < 15 ; i++)  // 현재 각도에서 15도 빼주기
      {
        angle = angle - 1;
        if(angle <= 0)
          angle = 0;
        servo.write(angle);
        delay(10);
      }
      Serial.println(angle);  // 현재 각도 출력
    }
    else  // 잘못된 문자열을 입력했을 때
    {
      Serial.println("wrong character!!");
    }
  }
}

댓글목록

최고관리자님의 댓글

최고관리자 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일

if(input == 'u')    // u 키를 누를 때
    .....
else if(input == 'd')  // 'd'키를 입력했을 때
    ....
else  // 잘못된 문자열을 입력했을 때
    Serial.println("wrong character!!");

이렇게 되어 있네요. wrong character 가 표시되었다면 u, d 외의 문자가 인식되었기 때문입니다. 혹시 PC에서 문자 보낼때 line ending, carriage return 문자가 붙어서 보내진건 아닌지 확인하세요. 시리얼 모니터 하단에 줄넘김 문자를 붙이는 옵션이 있습니다.