?>

Hard Copy World

HCW

Q&A

Home > Forum >

Q&A

matlab에서 arduino로 float값을 보내는 방법을 물어보러왔습니다.

페이지 정보

작성자 손현식 메일보내기 이름으로 검색 작성일15-01-07 17:49 조회4,067회 댓글1건

본문

제가 매트랩에서 실수형 float을

---생략---

kp=1.234;

fwirte(s,kp,'float')

이렇게 보내고

아두이노에서 값을

float K=0.0;

typedef union {
  float floatingPoint;
  byte binary[4];
} binaryFloat;

binaryFloat Kp;

 

void loop(){

if ( Serial.available() >=4)
     {
        Kp.binary[0]  = Serial.read();
        Kp.binary[1]  = Serial.read();
        Kp.binary[2]  = Serial.read();
        Kp.binary[3]  = Serial.read();

        K=Kp.floatingPoint;

    }

}

이런식으로 매트랩에서 아두이노로 float 형으로 값을 보내서 받으려는데

이게 계속 안되네요 ㅠㅠ어떻게 해야 될지 조언좀 구할 수있을까요 ? 더좋은방법이

있다면 좀 가르쳐주시면 감사하겠습니다.

추운날씨에 감기조심하십시오!

댓글목록

하드카피님의 댓글

하드카피 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일

아두이노 float은 4byte 입니다. MatLab float 사이즈가 어떻게 되는지 모르겠네요. 만약 사이즈가 같고 같은 형식으로 사용한다면... matlab에서 float 을 1byte 씩 보낸걸 그대로 받아서 써주면 될겁니다.

if ( Serial.available() ) {
    Kp.binary[i]  = Serial.read();
    i++;
}

만약 float 사이즈가 틀리다면 부호비트(1bit), 지수부(8bit), 가수부(23bit) 사이즈에 맞게 변형해서 보내줘야 할 것 같습니다.
http://edps5091.tistory.com/entry/%EA%B5%90%EC%9C%A1%EC%9E%90%EB%A3%8C-float-double-%EB%B6%80%EB%8F%99%EC%86%8C%EC%88%98%EC%A0%90-%ED%98%95%EC%8B%9D-IEEE-754-%ED%91%9C%EC%A4%80