2017-11-26 4 views
0

Ich habe einen Codierungsfehler zwischen Android und ATtiny84 [1mhz]. Immer wenn ich Wert über ATtiny84 float geschickt habe, änderte sich der Float-Wert in Android in einen seltsamen Wert.Merkwürdiger Wert, wenn Attiny84 und Android mit ble kommunizieren

Android-Code, den ich verwende, ist Chat-Anwendung in Google Playstore.

Bluetooth-Modul ist JDY-10 und mit ATtiny84 verbunden. Auch ein Analogsensor ist an ATtiny84 angeschlossen.

Ich versuche, analoge Sensordaten als Float zu Android mit blö zu senden.

Verbindung zwischen JDY-10 und Android ist in Ordnung.

Als ich es als Uno anstelle von ATtiny84 getestet habe. Es hat kein Codierungsproblem einschließlich anderer Zeichenwerte.

Wie kann ich das Codierungsproblem lösen?

Wenn ich Daten ohne seltsamen Wert übertragen möchte, muss ich Manchester-Bibliothek verwenden?

unten ist mein Code.

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

Antwort

0

ich es gelöst. Ich habe Clock Intern 1MHz auf 8MHz beim Brennen Bootloader geändert. Float und String Wert sind jetzt in Android Chat-Anwendung in Ordnung.