답변감사합니다!!
코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
servo 예제) 모터 작동 및 출력 결과 오류 관련 질문
컴솜솜 | 2020-04-30
|
|
---|---|
1. 프로젝트 사용한 보드 종류 아두이노 UNO
2. 사용한 개발 프로그램명 sketch
3. 사용한 센서 모델명 (센서 모델명을 자세하게 적어 주실 경우 더 정확하게 확인할 수 있습니다.) Tower Pro tm/Micro Servo 9g/SG 90
4. 연결한 회로 설명 (또는 이미지) 5V, GND, 9번 포트 사용했습니다.
5. 소스코드 (주석 필수) (원하는 기능의 코드를 전부 작성해 드리긴 어렵습니다. 기초부터 차근차근 공부해보면서 코드를 만들어 보세요.)
#include <Servo.h> Servo myservo; // create servo object to control a servo void setup() { void loop() {
6. 문제점 및 에러 내용 (소스코드 문제일 경우 에러 내용도 같이 올려주세요.)
<현재 시리얼 모니터 결과값 : 100을 입력한 결과> Servo Motor Version 1 Move to: 0
<원하는 결과값 : 100을 입력한 결과> // 삭제할 주석을 삭제한경우 Servo Motor Version 1
<문제점> 1) 100을 입력한 결과 100으로 출력되지 않고 한칸한칸 따로 출력됨 2) servo 객체에 올린 경우, 실행이 1회만 적용됨 // 추가적으로 여러 케이스(예:50, 90)을 입력할 경우 servo 모터에 반응 없음 3) 100을 입력했는데 마지막에 0이 한번더 출력됨
<궁금한 점> 이 부분 : Serial.print(szTemp); // 삭제할 주석 : szTemp 잘 들어갔는지 확인 1) szTemp에 char을 한자씩 잘 넣어줬는데 왜 100이 출력이 안되고 한자씩 출력되는지 2) 마지막 추가적으로 출력되는 0의 출처 3) loop로 무한 반복되는데 입력에 대한 작동이 왜 1번만 이루어지는지 |
|
|
|
이전글 | 아두이노 gps와 블루투스 연결 | 2020-04-27 |
다음글 | exit status 1 보드 Arduino Uno 컴파일 에러 / 이유를 모르겠습니다 ... | 2020-05-01 |
판다마니아 2020-05-08 08:55:41
시리얼 통신은 데이터를 1글자씩 전달합니다.
100이라는 글자를 넘겼으면 숫자 100을 한번에 전달하는게 아니라 문자 '1', '0', '0' 이렇게 3번 전달하게 되는거죠
그렇기 때문에 50, 90을 입력했을 경우에도 결과가 '5', '0' ',' '9' '0' 이 입력되기때문에 마지막에 입력되는 값 0이 동작되서 모터에 반응이 없게 됩니다.
마지막에 0이 한번 더 출력되는 문제는 시리얼 모니터 하단에 보시면 line ending 없음, 새줄, 캐리지 리턴 ... 등 설정하는 부분이 있는데 이게 새 줄이나 캐리지 리턴, Both CR & NL 이렇게 되어있어서 마지막에 종결문자 하나가 더 전달되서 그렇게 됩니다.
Serial.available 함수는 데이터가 전달 되었을 때에만 참으로 리턴을 줍니다. 데이터를 한번 전달하면 전달받은 데이터가 있을 때에만 동작을 하게 되고 아무런 데이터가 없을시에는 거짓이 되어 if 문 안에 명령어가 동작하지 않게 됩니다.
loop문은 무한으로 반복하고 있는데 이 if문에서 거짓이 되어 동작을 안하는 거 처럼 보이게 되는겁니다.