2017-11-26 7 views
0

AndroidとATtiny84 [1mhz]のエンコーディングエラーがあります。私がATtiny84を介して浮動小数点値を送るたびに、浮動小数点値はAndroidで変わった値に変わりました。Attiny84とAndroidがbleと通信するときの奇妙な値

私が使用するAndroidコードは、Google Playstoreでble chatアプリケーションです。

BluetoothモジュールはJDY-10でATtiny84に接続されています。 また、1つのアナログセンサーが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); 
    } 
} 

答えて

0

私はそれを解決しました。 ブートローダを作成するときに、クロック内部を1MHzから8MHzに変更しました。 Androidチャットアプリケーションで浮動小数点数と文字列の値が正常になりました。

関連する問題