질문게시판 > 서보모터 제어에 관하여 궁금합니다

인기검색어 > 아두이노 센서 ATMEGA128

최신글 질문게시판 동영상강좌 가입하기

▼ BASIC4MCU 후원업체 신제품 정보 ▼

▲ BASIC4MCU 후원업체 신제품 정보 ▲

BASIC4MCU > 질문게시판

서보모터 제어에 관하여 궁금합니다

페이지 정보

작성자 오소로롯 작성일22-05-24 00:24 조회777회 댓글3건

본문

https://cafe.naver.com/circuitsmanual/220290 

 

우선 링크해주신 카페글을 참조하였습니다

 

<프로그램 조건>

 

1) Serial.available() 

• 아두이노의 Serial에 수신된 byte 수 

• 0 이면, 수신된 데이터 없음 


2) Serial.parseInt()

• Serial에 수신된 데이터로부터 정수(integer)를 읽어 온다.


1) Serial에 수신된 데이터가 있는가? 없으면 loop()함수 탈출 

2) Serial에서 정수를 읽어온다. 

3) 0 보다 작거나 180 보다 크면? 예외처리 

4) 서보 모터에 각도를 출력한다. 5) 적당한 시간을 기다린다.


1) sn = 0 인데, parseInt()에 값이 들어오기도 함. 

2) sn = 0 인 경우, parseInt() 하지않고 빠져나가고 

3) 다음 loop에서 sn > 0 이 되면, parseInt() 하면됨.  

 

 

인데  작성해주신 코드를 참고하여 해보았으나, Serial 출력창에 문자가 출력되지 않고 각도수치를 입력해도 반응이 없었습니다.

 

그래서 제 나름대로 수정하여 해보았는데

 

Serial 창에 각도를 입력하면 서보가 입력된 각만큼 회전하여 작동이 잘 되고

회전한 후 다시 원상복구 됩니다

 

문제는

 

1) Serial에 수신된 데이터가 있는가? 없으면 loop()함수 탈출


2) sn = 0 인 경우, parseInt() 하지않고 빠져나가고 

3) 다음 loop에서 sn > 0 이 되면, parseInt() 하면됨.  


이말이 무슨뜻인지, 어떻게 코드로 작성하는지 헷갈립니다 

 

<코드>

 

#include <Servo.h>

Servo servo9;

 

void setup()

{

  Serial.begin(115200);

  servo9.attach(9, 500, 2500);

}

 

void loop()

{

  int sn = Serial.available();

  if(sn=0)

  {

    return;

  }

  

  int deg = Serial.parseInt();

  if((deg<0)||(deg>180))

  { 

    Serial.println("Error");

    return;

  }

  

  servo9.write(deg);

  Serial.print(sn); 

  Serial.print(":"); 

  Serial.println(deg);

  

  delay(1000);

}

 

 

sn이 0이면 루프 함수를 탈출하라는게 입력이 0이거나 더이상 입력되지 않을경우 원래상태로 돌아가란 건지 모르겠습니다.

 

그리고 시리얼 모니터에 출력되는 수치가 n:n으로 나오는데 

왜 그런건지도 궁금합니다!

 

 

 

 

 

 

 

  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기
  • 카카오톡으로 보내기

댓글 : 3

조회수 : 777

master님의 댓글

master 작성일

Serial 출력창에 문자가 출력되지 않고
//
void setup(){
  Serial.begin(115200);
  Serial.println("test");
}
void loop(){}
간단한 코드로 시리얼 모니터에 출력되는지 확인하세요

master님의 댓글

master 작성일

1) Serial에 수신된 데이터가 있는가? 없으면 loop()함수 탈출
//
void loop(){
  if(Serial.available()==0)return; // 수신 개수가 0이면 루프 함수를 빠져나감
//
아래도 기능은 마찬가지 입니다.

void loop(){
  int sn=Serial.available(); // 수신된 바이트 수를 읽고
  if(sn<'1')||(sn>'3'))return; // 바이트 수가 1자리~3자리가 아니면 빠져나감

오소로롯님의 댓글

오소로롯 댓글의 댓글작성일

감사합니다 말씀해주신거 이해하여 잘해결하였습니다 감사합니다!!

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[25] master  17-10-29
질문 해석좀 해주세요 댓글[1] bubu 새글 22-08-14
질문 lcd 1602에 특수문자를 출력하는 방법을 알고싶습니… 댓글[3] dndktn  22-08-12
질문 stm32 wifi 파일전송 댓글[3] 하리  22-08-11
질문 회로 구성 수정 댓글[2] 첨부파일픽공부  22-08-11
질문 아두이노 와이파이통신 질문 있습니다 댓글[1] 학생  22-08-11
질문 포토다이오드와의 연결 질문합니다. 댓글[7] 첨부파일박윤모  22-08-10
질문 회로 구성 댓글[4] 픽공부  22-08-10
질문 아두이노 센서, 와이파이, 블루투스 연결 댓글[1] pattern  22-08-10
질문 PIC 블루투스 연결 댓글[19] 픽공부  22-08-09
질문 PIC18F452 블루투스 연결 댓글[4] 마이컴  22-08-08
질문 아두이노 코드 해석을 못하겠습니다... 댓글[2] 김가헌  22-08-08
질문 아두이노 코드를 avr로 변환해 주세요 ...ㅠ 댓글[3] 옹냥냥  22-08-08
질문 아두이노 녹음-스피커모듈 관련 질문있습니다 ㅠㅠ 댓글[2] 방귀뿡뿡  22-08-08
질문 Serial EEPROM 실수값 저장.. 댓글[2] 첨부파일광이  22-08-07
질문 STM32 Live Expression 값들이 깜빡이는… 댓글[3] 둠둠  22-08-05
질문 아두이노 ESP32 wifi module 댓글[1] Yoon  22-08-03
질문 atmega128과 dht11, lcd를 연결했는데 0… 댓글[1] 고양이33  22-08-02
질문 ATMEGA 128 코드를 합치려고 하는데 어렵네요 댓글[2] 고양이33  22-08-02
질문 서보모터 제어에 대해 질문있습니다. 댓글[2] 첨부파일뉴비에오  22-07-30
질문 적외선 통신 알려주실분있나요 ㅠㅠ 댓글[1] hkjsj10  22-07-30
질문 아두이노 관련 궁금합니다. 댓글[1] 뱝뱝  22-07-28
질문 아두이노 우노 MCP4725 댓글[3] opqr  22-07-27
질문 레오나르도 인체감지센서 알림 안옴 면지지  22-07-24
답변 답변 : 레오나르도 인체감지센서 알림 안옴 master  22-07-25
질문 Uno에서 엔코더값 놓치는 이유가 뭘까요... 댓글[3] MAKTUB  22-07-24
질문 아두이노 압력센서 연동 질문 댓글[4] dbice  22-07-23
질문 아두이노 버튼 누르기 문의 댓글[1] 김형근  22-07-23
질문 HM10 다중페어링 댓글[1] ㅎㅋㅎㅋㅎ  22-07-22
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전