아두이노 코딩 질문있습니다
글쓴이: arcdrive / 작성시간: 금, 2016/12/30 - 10:42오전
안녕하세요 코딩을 시작한지 얼마 안된 초보입니다.
지금 adxl335가속도센서모듈을 사용해서 uart통신으로 값을 받아와서
그 값들을 tempx, tempy, tempz에 값들을 저장해서 x,y,z축값의 범위를 주려고 하는데
센서를 움직이지 않아도 컴파일하거나 리셋후 실행시킬때마다 값들이 뜬금없이 10000단위가 넘어버리거나 x,y,z값이 서로 달라지거나 합니다.
아마 원래 센서값만 받아올 때 x,y,z값이 나오고나서 자동으로 개행이되서 그부분도 저장이되어 그러지않나 싶은데 ...
그리고 사진은
x, y, z값들이 z, x, y로 저장되어버린겁니다.
보통 x,y,z값이 640,645,775 정도로나옵니다.
아래가 문제부분의 코드입니다.
while(ac.available()>0) { ac.readBytesUntil(',', tempx, 5); ac.readBytesUntil(',', tempy, 5); ac.readBytesUntil(',', tempz, 5); Serial.print("x="); Serial.write(tempx); Serial.print(" y="); Serial.write(tempy); Serial.print(" z="); Serial.write(tempz); if (abs(tempx-x) >30){ digitalWrite(led1, HIGH); } }
보드는 아두이노 Uno쓰고있습니다
File attachments:
첨부 | 파일 크기 |
---|---|
![]() | 33.48 KB |
Forums:
통신시 프로토콜을 정의하셔야 합니다.
통신시 프로토콜을 정의하셔야 합니다.
예를 들면 x, y, z 순서로 전송된다고 가정하는 상황이라면 x, y, z 순서로 오는 것을 확인하는 작업을 추가하셔야 합니다. 예를 들면 x, 640, y, 645, z, 775 이런 식으로도 올수 있겠죠. 만약 이렇게 source를 확인할 수가 없다면 센서 disable -> 센서 enable 식으로 해서 센서가 다시 x, y, z 순서로 보낼 수 있도록 해 주어야 합니다.
한줄씩 읽어서,
한줄씩 읽어서,
한줄에 있는 값3개를 변수에 넣으세요.
댓글 달기