?>

Hard Copy World

HCW

Q&A

Home > Forum >

Q&A

블루투스, FSR센서 관련하여 질문드립니다

페이지 정보

작성자 니나니나노 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일16-05-07 18:22 조회848회 댓글3건

본문

//수신부
#include <Arduino.h>
#include <SoftwareSerial.h>
SoftwareSerial BTkangjung(2,3);

void setup()
{
  Serial.begin(9600);
  BTkangjung.begin(9600);  
}
void loop()
{
  if(BTkangjung.available())
  {
    unsigned char val = BTkangjung.read();
    Serial.println(val);
    delay(100);
  }
}
 

//송신부

#include <Arduino.h>
#include <SoftwareSerial.h>

SoftwareSerial BTHou(10,11);

int fsrval;

void setup()
{
  Serial.begin(9600);
  BTHou.begin(9600);  
}

void loop()
    { 
  fsrval = analogRead(A0);
     
  BTHou.write(fsrval); 
  delay(100);
}

블루투스로 fsr 센서 값을 받아오는걸 하고 있는데, 0~1023까지 나와야 하는 값이 0~223? 이 정도 까지 밖에 안나옵니다.

해결방안 좀 알려주시면 감사하겠씁니다!

참고로 수신부는 노트북으로 전원공급하고 있고 송신부는 파워서플라이로 공급해주고 있습니다.

댓글목록

최고관리자님의 댓글

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

아두이노에서 int 형은 2바이트입니다. 그런데 write() 함수는 1byte 만 전송합니다.
BTHou.write(fsrval);
따라서 이 부분은 2개의 1바이트 데이터로 각각 전송해줘야 합니다.
BTHou.write(fsrval >> 8);
BTHou.write(fsrval);
물론 받는 쪽에서도 2개의 바이트를 조합해서 원래의 int 형으로 복원해야 합니다.

니나니나노님의 댓글

니나니나노 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 댓글의 댓글 작성일

송신부 : BTHou.write(fsrval >> 8); BTHou.write(fsrval); 와
수신부 :  unsigned char Val1 = BTkanjung.read(); unsigned char Val2 = BTkanjung.read();
int Val= Val1+Val2 << 8; Serial.println(Val);

이렇게 복원 하려 하는데 계속 값이 이상한 값이 나옵니다. 복원부분에서 어디가 문제 있는 것인지 잘 모르겠습니다.

최고관리자님의 댓글

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

16비트 중 앞 8비트를 먼저 전송했으니 앞 8비트를 먼저 복원해야 합니다. 뒤 8비트와 합칠 때는 or(|) 연산을 해보세요.
int Val= (Val1 << 8) | Val2;