我在 Android 和 ATtiny84[1mhz] 之间存在编码错误。每当我通过 ATtiny84 发送到浮点值时,浮点值在 Android 中变为奇怪的值。
我使用的 Android 代码是 google playstore 中的 ble 聊天应用程序。
蓝牙模块为 JDY-10,连接 ATtiny84。一个模拟传感器也连接到 ATtiny84。
我正在尝试使用 ble 将模拟传感器数据作为浮点数发送到 Android。
JDY-10 和安卓的连接非常好。
当我将它作为 Uno 而不是 ATtiny84 进行测试时。它没有编码问题,包括其他字符值。
如何解决编码问题?
如果我想传输没有奇怪值的数据,我必须使用曼彻斯特库吗?
下面是我的代码。
阁楼84
#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);
}
}