Android和ATtiny84 [1mhz]之间存在编码错误。每当我通过ATtiny84发送浮点值时,浮动值在Android中变为奇怪的值。
我使用的Android代码是google playstore中的聊天应用程序。
蓝牙模块是JDY-10并连接到ATtiny84。 另外一个模拟传感器连接到ATtiny84。
我尝试使用ble。将模拟传感器数据作为float发送到Android。
JDY-10和Android之间的连接非常好。
当我将其作为Uno而不是ATtiny84进行测试时。它没有包含其他字符值的编码问题。
如何解决编码问题?
如果我想传输没有奇怪价值的数据,我是否必须使用曼彻斯特库?
下面是我的代码。
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);
}
}
答案 0 :(得分:0)
我解决了。 刻录bootloader时,我将Clock Internal 1MHz更改为8MHz。 Android聊天应用程序中现在可以使用Float和String值。