Android와 ATtiny84 [1mhz] 사이에 인코딩 오류가 있습니다. ATtiny84를 통해 float 값을 전송할 때마다 float 값이 Android에서 이상한 값으로 변경되었습니다.Attiny84와 Android가 외침과 통신 할 때 이상한 가치
내가 사용하는 Android 코드는 google playstore에서 ble 채팅 응용 프로그램입니다.
블루투스 모듈은 JDY-10이며 ATtiny84에 연결됩니다. 또한 하나의 아날로그 센서가 ATtiny84에 연결됩니다.
ble를 사용하여 아날로그 센서 데이터를 Android로 float으로 보내려고합니다.
JDY-10과 Android 간의 연결은 꽤 괜찮습니다.
내가 ATtiny84 대신 Uno로 테스트했을 때. 다른 문자 값을 포함하여 인코딩 문제가 없습니다.
인코딩 문제를 어떻게 해결할 수 있습니까?
이상한 값없이 데이터를 전송하려면 맨체스터 라이브러리를 사용해야합니까?
아래 코드는 제 코드입니다.
ATtiny84
#include <SoftwareSerial.h> //Software Serial Port
const int FSR_PIN = A2;
const float VCC = 3.3;
const float R_DIV = 100.0;
SoftwareSerial blueToothSerial(7,8);
void setup(){
Serial.begin(9600);
pinMode(FSR_PIN, INPUT);
blueToothSerial.begin(115200);
delay(2000);
}
void loop(){
int fsrADC = analogRead(FSR_PIN);
if (fsrADC != 0){
float fsrV = fsrADC * VCC/1023.0;
float fsrR = R_DIV * (VCC/fsrV - 1.0);
float force;
float fsrG = 1.0/fsrR;
if (fsrR <= 600)
force = (fsrG - 0.00075)/0.00000032639;
else
force = fsrG/0.000000642857;
blueToothSerial.println(String(force));
blueToothSerial.println();
Serial.println("Force: " + String(force) + " g");
Serial.println();
blueToothSerial.flush();
delay(500);
}
}