Bluetooth Empfänger liest falsche Werte

Hallo,

also 2 Sachen fallen mir da auf ......

if(bt.peek()!=-1){
short val = bt.peek();
dataVal=val-48;
if(dataVal>=1 && dataVal<=4) blt();
else rewindBt();
}

?????? Was ist das. Was willst du damit erreichen.

Und die Delay müssen weg. Suche dir einen Weg das anders zu lösen.

Ich habe dir mal meinen Serial-BT-Reciver angehängt der benutzt kein Delay. Nur als Anschaung.

//
// Code by tft-elektronik.com
//
// Reciver, um Daten direkt weiterzuleiten.
// 1 * Hardware Serial / 1 * SoftSerial für BlueTooth
// Mich Echo Funktion

// Konstanten

#define PIN_RECEIVE         11   // dieser Pin muss Interupt fähig sein
#define PIN_SEND            12

#define SPEED_BLUETOOTH     57600    // diese geschwindigkeit muss im BlueThoot Modul eingestellt sein
#define SPEED_SERIAL        57600

#define LED_Pin             13

#include <Wire.h>
#include <SoftwareSerial.h>

unsigned long Mill   = millis()   ;

unsigned long BlinkTimer   = 0   ;
long          BlinkInterval = 500 ;
byte          BlinkStatus = 0 ;

int i = 0 ;
char thisSerialChar = 0 ;
char thisBlueSerialChar = 0 ;

SoftwareSerial BlueSerial(PIN_RECEIVE, PIN_SEND);

void setup() {
  
  // put your setup code here, to run once:
  pinMode(LED_Pin, OUTPUT) ;
  
  Serial.begin(SPEED_SERIAL);
  BlueSerial.begin(SPEED_BLUETOOTH);

  // Serial gibt nicht den Status der Verbindung wieder, Sondern ob eine
  // Schnitstelle von seiten des Arduino bereit ist. Beim Leonardo ist
  // dies nach einem Reset nicht sofort da.

  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
  
}

void loop() {
  // put your main code here, to run repeatedly:
  Mill = millis();

  // Damit man sieht ob das Programm läuft
  if (BlinkTimer<Mill) {
    BlinkTimer = Mill + BlinkInterval ;
    if (BlinkStatus == 0) {
      BlinkStatus = 1 ;
      digitalWrite(LED_Pin,HIGH);
    }
    else {
      BlinkStatus = 0 ;
      digitalWrite(LED_Pin,LOW);     
    }
    
  }

  // Daten von der Serialen Hardware Schnitstelle holen und an die BlueTooth Schnitstelle senden
  if (Serial.available()) {
    i = Serial.available() ;
    while (i > 0)
    {
      thisSerialChar = Serial.read() ;
      BlueSerial.write(thisSerialChar);
      Serial.write(thisSerialChar); // Echo
      i = Serial.available() ;
    }
  }
  
  // Daten von der BlueTooth Schnitstelle holen und an die Seriale Schnitstelle senden  
  if (BlueSerial.available()) {
    i = BlueSerial.available() ;
    while (i > 0)
    {
      thisBlueSerialChar = BlueSerial.read() ;
      Serial.write(thisBlueSerialChar);
      BlueSerial.write(thisBlueSerialChar); // Echo
      i = BlueSerial.available() ;
    }
  }
}