질문게시판 > 답변 : 답변 : 답변 : 답변 : 레오나르도 시리얼통신 마우스 질문드립니다.

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

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

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

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

BASIC4MCU > 질문게시판

답변 : 답변 : 답변 : 답변 : 레오나르도 시리얼통신 마우스 질문드립니다.

페이지 정보

작성자 master 작성일19-03-14 09:16 조회27회 댓글2건

본문

 

// DateTime : 2019-03-14 오전 9:16:27
// by Ok-Hyun Park
#include <Mouse.h>
String Command="";
char Temp="";
void setup(){
  Serial.begin(9600);
}
//
void loop()
{
  Command="";
  while(Serial.available()){
    Temp=Serial.read();
    Command.concat(Temp);
  }
  if(Command!=""){
    if(Command=="Click"){
      Mouse.click();
    }
    int first=Command.indexOf(",");
    int second=Command.indexOf(",",first+1);
    int xpos=Command.substring(0,first).toInt();
    int ypos=Command.substring(first+1,second).toInt();
    int finalxpos=0;
    int finalypos=0;
    while(xpos||ypos){
      if(xpos>127)finalxpos=127;
      else if(xpos<-128)finalxpos=-128;
      else          finalxpos=xpos;
      xpos-=finalxpos;
      if(ypos>127)finalypos=127;
      else if(ypos<-128)finalypos=-128;
      else          finalypos=ypos;
      ypos-=finalypos;
      Mouse.move(finalxpos,finalypos);
    }
  }
}

 

지금처럼 처리하면

여러개의 데이터를 전송하더라도 매 바이트마다 if(Command!=""){ 문이 실행됩니다.

오동작하게 되는거죠

 

  while(Serial.available()){
    Temp=Serial.read();
    Command.concat(Temp);
  }
위 문장은 실행 시간이 빠르기 때문에

1바이트 밖에 수신하지 못합니다.

 

 

 

// DateTime : 2019-03-14 오전 9:26:43
// by Ok-Hyun Park
//
#include <Mouse.h>
String Command="";
char   Temp=0;
void setup(){
  Serial.begin(9600);
}
//
void loop(){
  while(1){ // '\n' 받을 때까지 버퍼에 더하면서 무한 대기
    Temp=Serial.read();
    if(Temp=='\n'){            Command.concat(Temp); continue; }  
    else          { Temp='\0'Command.concat(Temp); break;    }
  }
  //
  if(Command=="Click"){ Mouse.click(); }
  else{
    int first=Command.indexOf(",");
    int second=Command.indexOf(",",first+1);
    int xpos=Command.substring(0,first).toInt();
    int ypos=Command.substring(first+1,second).toInt();
    //
    while(xpos||ypos){
      if     (xpos127)finalxpos127;
      else if(xpos<-128)finalxpos=-128;
      else              finalxpos=xpos;
      xpos-=finalxpos;
      if     (ypos127)finalypos127;
      else if(ypos<-128)finalypos=-128;
      else              finalypos=ypos;
      ypos-=finalypos;
      Mouse.move(finalxpos,finalypos);
    }
  }
  Command="";
}

 

이 코드 돌려보세요

 

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

댓글 : 2

조회수 : 27

이이제이님의 댓글

이이제이 작성일

감사합니다 돌려보았습니다만.
100,200\n 을주었지만 무반응입니다 제생각엔 시리얼모니터가 \n을 못읽는것같습니다.

master님의 댓글

master 댓글의 댓글작성일

void loop(){
  while(1){ // '\n' 받을 때까지 버퍼에 더하면서 무한 대기
    Temp=Serial.read();
    if(Temp=='\n'){            Command.concat(Temp); continue; } 
    else          { Temp='\0'; Command.concat(Temp); break;    }
  }
  //
<--------- 여기에서 Command를 시리얼모니터에 출력해서 무엇을 받았는지 체크해보세요
  if(Command=="Click"){ Mouse.click(); }
  else{

받는데 문제가 있는지, 정상적으로 받았는데 파싱에서 문제가 있는지
둘 중 하나겠죠

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[5] master  17-10-29
질문 AVR STUDIO 4.19 & AVRISP MKII … 댓글[1] 오박사 새글 19-03-18
질문 예제 코드 구합니다 댓글[1] 첨부파일오박사 새글 19-03-18
질문 마스터님! 고생하십니다! 인터럽트 질문좀 드리겠습니다. 닷모드 새글 19-03-18
답변 답변 : 마스터님! 고생하십니다! 인터럽트 질문좀 드리… master 새글 10:36
질문 시리얼 통신 키보드 질문드립니다. 댓글[1] 이이제이 새글 19-03-18
질문 스텝모터 제어 역방향 회전시 힘이 약하게 돌아가는 현상 궁금합니다  19-03-16
답변 답변 : 스텝모터 제어 역방향 회전시 힘이 약하게 돌아… 댓글[2] master  19-03-16
질문 아두이노시리얼 0xff가 available 사용해도 계… yangty01  19-03-16
답변 답변 : 아두이노시리얼 0xff가 available 사… master  19-03-16
질문 atmega128 Switch를 이용한 FND제어 질문 master  19-03-16
질문 아두이노 시리얼통신 질문합니다. 댓글[3] 이이제이  19-03-16
질문 ATmega128에 대해서... 댓글[2] YDyd  19-03-15
질문 프로세싱 RFID 태그시 색변화.. 댓글[1] ksyh2030  19-03-14
질문 avr i2c eeprom 코드관련해서요 댓글[1] 첨부파일남이  19-03-14
질문 avr에 대해서... 댓글[3] YDyd  19-03-14
질문 초음파 용착기에 대해 질문드립니다! ! 댓글[2] 닷모드  19-03-12
질문 Pir센서 감지 후 rf433 송신기 A반장  19-03-12
답변 답변 : Pir센서 감지 후 rf433 송신기 댓글[13] master  19-03-12
답변 답변 : 답변 : Pir센서 감지 후 rf433 송신기 댓글[11] master  19-03-14
질문 레오나르도 시리얼통신 마우스 질문드립니다. 댓글[1] 이이제이  19-03-11
답변 답변 : 레오나르도 시리얼통신 마우스 질문드립니다. 댓글[5] master  19-03-12
답변 답변 : 답변 : 레오나르도 시리얼통신 마우스 질문드립… 댓글[4] master  19-03-12
답변 답변 : 답변 : 답변 : 레오나르도 시리얼통신 마우스… 댓글[18] master  19-03-13
답변 답변 : 답변 : 답변 : 답변 : 레오나르도 시리얼통… 댓글[2] master  19-03-14
질문 아두이노 스텝모터 제어에 대해 질문드립니다. 닷모드  19-03-11
답변 답변 : 아두이노 스텝모터 제어에 대해 질문드립니다. 댓글[6] master  19-03-12
답변 답변 : 답변 : 아두이노 스텝모터 제어에 대해 질문드… 댓글[2] master  19-03-14
질문 ATmega에 대하여 궁금합니다. YDyd  19-03-11
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전