2017-11-26 2 views
0

Android와 ATtiny84 [1mhz] 사이에 인코딩 오류가 있습니다. ATtiny84를 통해 float 값을 전송할 때마다 float 값이 Android에서 이상한 값으로 변경되었습니다.Attiny84와 Android가 외침과 통신 할 때 이상한 가치

내가 사용하는 Android 코드는 google playstore에서 ble 채팅 응용 프로그램입니다.

블루투스 모듈은 JDY-10이며 ATtiny84에 연결됩니다. 또한 하나의 아날로그 센서가 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 채팅 응용 프로그램에서 Float 및 String 값이 양호합니다.

관련 문제