아두이노 tofloat 잘못된 값
글쓴이: within / 작성시간: 월, 2021/02/01 - 5:56오후
void loop() { char read_data[100]; int Length =0; Length = mySerial.readBytes(read_data,9); if (Length > 0) { String s_data; for (int i=0; i<Length; i++) { s_data += read_data[i]; } float f_data = s_data.toFloat(); Serial.println(f_data); } }
저울과 시리얼 통신을 하여 값을 받아오는 코드입니다.
s_data(string형식)로 print를 하면 값을 제대로 받아오는데 f_data(float형식)으로 받아오면 0.38이라고 정상적인 값이 뜨다가 중간중간 38.00이라고 계속 뜨네여....
원인이랑 해결방법을 알수있을까여??
Forums:
Length 값이 어떻게 되는지 같이 찍어보세요.
Length 값이 어떻게 되는데 같이 찍어보세요.
s_data 값을 같이 찍어보세요.
s_data 값을 같이 찍어보세요.
mySerial.readBytes 호출 후, read_data 에 예상치 못한 값이 들어있을 수 있습니다.
타임아웃 값이 적절한지 확인도 해보시구요.
https://www.arduino.cc/reference/ko/language/functions/communication/serial/settimeout/
또는, 루프가 늦어서.. 저울에서 보내는 데이터가 다 처리되지 못하고 쌓여서 문제가 될수도 있습니다.
사족으로...
저는 C 사용자라.. strtof를 사용하지 싶습니다.
그런데.. Serial.parseFloat 함수도 있군요
https://www.arduino.cc/reference/en/language/functions/communication/serial/parsefloat/
댓글 달기