블루투스, FSR센서 관련하여 질문드립니다
페이지 정보
작성자 니나니나노 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일16-05-07 18:22 조회1,118회 댓글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;