Attiny84和Android与ble进行通信时的奇怪价值

时间:2017-11-26 17:25:52

标签: android encoding arduino bluetooth-lowenergy attiny

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);
  }
}

1 个答案:

答案 0 :(得分:0)

我解决了。 刻录bootloader时,我将Clock Internal 1MHz更改为8MHz。 Android聊天应用程序中现在可以使用Float和String值。