Daten mit Arduino Leonardo inkl. BLE-Shield v2.0.0 an Smartphone senden/empfange

Hallo habe ein Smartphone Samsung S4 und das Arduino Leonardo board mit dem BLE-Shield v.2.0.0 von Dr.M.Kroll.
siehe link Dr. Michael Kroll.

Wollte über BLE also Bluetooth 4.0 vom SMartphone daten an den Arduino via BLE senden bzw. empfangen.
Habe auch ein sketch auf der opengenannten page gefunden doch wenn ich vom Smartphone über die App BLE explorer ein Zeichen zum Test eingebe erhalte ich auf der konsole ein anderes Zeichen.
Hängt es vllt. an dem Bluetoothprotokoll von Android oder an dem folgendem COde:

boolean connected;
void setup()   {
  
  // On the Leonardo, the Serial port is mapped to the USB Cable
  // and is not available at pins D0/D1.
  // We set it to 9600 baud.
  Serial.begin(9600);

  // The BLE-Shield v2.0.0 is running at 9600 baud by default
  // Set the data rate for the Serial1 port on Pins 0/1
  // The jumpers has to be set to RX -> D0 and TX -> D1
  Serial1.begin(9600);

  Serial.print("BLE-Shield v2.0.0 Sketch setup...");

  // The BLE-Shield v2.0.0 is not only litting up the blue LED on connection, 
  // but raising and lowering an interrupt on the Arduino.
  // Finally you are able to see the connected state on the Arduino :-)
  // Here we attach the interrupt according to the spec at 
  // http://arduino.cc/en/Reference/attachInterrupt
  // The interrupt jumper has to be set to D7
  attachInterrupt(4, connection, CHANGE);    
  Serial.println(" done.");
  connected = false;
}

void loop() // run over and over
{
  // Wait for Data on the serial console and submit it to the
  // BLE-Shield byte per byte. there is no longer a buffer involved.
  if (Serial.available()) {
    char ch = Serial.read();
    Serial.print(ch);
    Serial.println();
    Serial1.write(ch);
  }
  
  // Wait for data send from the iPhone and print it to the serial console.
  // That's it. Quite simple.
  if (Serial1.available()) {
    //Serial.write(Serial1.read());
   char message = Serial1.read();
    Serial.write(message);
    Serial.print(message);
  }
}

// This method is called if the connection state changes. 
// When a connection is established, the Interrupt will be set to high, and
// set to low, once the BLE-Shield is disconnected.
void connection() {
  //connected = !connected;
  if (connected == true) {
    Serial.println("BLE-Shield Connected = true (4)");
  }
  else {
    Serial.println("BLE-Shield Connected = false (4)");  
  }
}

Und was ist boolean connected für eine Variable?
Weil wenn ich mich mit dem BLE shield koppele, dann bekomme ich is not connected ,wie kann das sein?

BItte um Ünterstützung komme nicht mehr weiter

HIer noch ein Bild zum Empfang von den Zeichen am PC, wenn ich es vom Smartphone sende.
Wo ist der Fehler?

2014-10-11_185715.png

milito:
Und was ist boolean connected für eine Variable?

Bitte lerne erst einmal die Arduino Basics. Ansonsten macht es kaum sinn. boolean bzw. bool kann 2 Werte annehmen. Zum einen 0 (falsch) und 1 (wahr). Ein "richtiger" Datentyp ist das aber nicht, bzw. es belegt genauso viel speicher wie ein byte oder char. Abfrage bei byte, int ... kann auch genau so gemacht werden. Wenn 0 (falsch) und wenn größer 0 (wahr).

sschultewolter:

milito:
Und was ist boolean connected für eine Variable?

Bitte lerne erst einmal die Arduino Basics. Ansonsten macht es kaum sinn. boolean bzw. bool kann 2 Werte annehmen. Zum einen 0 (falsch) und 1 (wahr). Ein "richtiger" Datentyp ist das aber nicht, bzw. es belegt genauso viel speicher wie ein byte oder char. Abfrage bei byte, int ... kann auch genau so gemacht werden. Wenn 0 (falsch) und wenn größer 0 (wahr).

Hi also 1) die Arduino basics habe ch bereits gelernt.
und 2 ) der code ist in dem Vorherigen Link zu finden und ist ein Testsketch und habe es auch gesagt.

Danke aber für deine Antwort, was mein Problem ist, ist das laut dieses Tutorials die vom Smartphone gesendeten Zeichen genauso auch auf dem Terminal zusehen sein sollten, was bei mir nicht der Fall ist, siehe angehängtes Bild.
Liegt es vllt an Android? --- Da das mit iOs getestet wurde.
Muss hinzusagen, dass auch manchmal die BLE-Explorer ab auf Android abstützt bzw angehalten wird.

Kann mir jemand einen Tipp geben?

Danke sehr :smiley:

sschultewolter:
Ein "richtiger" Datentyp ist das aber nicht

Da muss man man genaugenommen unterscheiden. In C gibt es keinen boolschen Datentyp. Daher hat man da oft einfach ein typedef auf char oder int gemacht (seit C99 gibt es das auch fertig implementiert). Das macht auch die Arduino Software. Wahrscheinlich auch wegen der Kompatibilität zu Processing (was Java ist).

C++ hat allerdings bool. Der belegt zwar auch ein ganzes Byte, aber es ist ein eigenständiger Datentyp. In der Arduino IDE wurde bool zumindest in früheren Versionen lediglich nicht vom Syntax Highlighting erfasst. Das ist zwar implizit in Integer-Typen konvertierbar, aber trotzdem nicht das gleiche.

Danke sehr Serenify :).

Weißt du woran mein Problem mit der Bluetooth-Übertragung ist?

Hi kann mir jemand zu dem Problem helfen?

Komme leider nicht weiter :frowning:

The baudrate setting is written to the internal storage of the BLE112 module, so the setting will persist even if you remove power from the module. During the next boot cycle after repowering the module or resetting it, the baudrate setting is restored from flash. So there is no need to reconfigure the BLE-Shield every time you power the module.

Die Baudrate des Shields wird, wenn ich deinen Link richtig verstehe, gegebebenfalls permanent verstellt.
Kann also sein, dass der default Wert 9600 nicht mehr stimmt ? ...

ok liegt es also daran, dass ich was komplett anderes empfange?

JA aber wie soll man das stabilisieren?