Problem bei der Datenübertragung vom seriellen Gerät zum Bluetooth auf Arduino

Ich verwende einen Beschleunigungsmesser, der serielle Kommunikation auf Arduino (UART) verwendet, ich möchte die Daten mit I2C an ein Bluetooth-Modul (blusmirf gold) übertragen und sie schließlich aus meiner Android-Anwendung lesen.

Ich kann den korrekten Messwert vom Beschleunigungsmesser erkennen und die Daten auch über Bluetooth übertragen. Wenn ich diese beiden Dinge jedoch zusammenfüge, überträgt es nur einmal und hört danach auf, irgendetwas zu übertragen.

Kann mir da jemand helfen? Vielen Dank im Voraus!

/*Hardwareanschluss:
  Arduino --------------- MMA8452Q Ausbruch
    3,3 V --------------- 3,3 V
    GND --------------- GND
  SDA (A4) --\/330 Ohm\/-- SDA
  SCL (A5) --\/330 Ohm\/-- SCL
*/
#include <Wire.h> // Muss die Wire-Bibliothek für I2C enthalten
#include <SFE_MMA8452Q.h> // Enthält die SFE_MMA8452Q-Bibliothek
#include <Ereignis.h>
#include <Timer.h>
#include<stdlib.h>

#include <SoftwareSerial.h>  
int bluetoothTx = 16; // TX-O-Pin des Bluetooth-Partners, Arduino A2,16
int bluetoothRx = 17; // RX-I-Pin des Bluetooth-Partners, Arduino A3,17
MMA8452Q Beschleunigung;
SoftwareSerielles Bluetooth (bluetoothTx, bluetoothRx); // für die Kommunikation zwischen ATMEGA 328 und BlueSMiRF Gold

int Start_But =4;
int LED_init = 7;
int LED_start =8;

Ganzzahl x[20];
int y[20];
int summe=0;
int summe1=0;
Schwimmer begin_val1;
Schwimmer begin_val2;
int-Typ;
int start_ref1;
int start_ref2;
Float Startpunkt ;
float force_sum;
float force_value1 ;
float force_value2;
float Spannungswert ;
Zeichenwert[10];
Zeichenwert2[10];

// Nehmen Sie den Sensormesswert und wandeln Sie ihn in den Kraftwert um und übertragen Sie ihn  


Void -Setup ()
{
Verzögerung (300);
   Serial .begin (9600); // Starten Sie den seriellen Monitor bei 57600 bps

Serial .println ("lalalalalalalalalaaaaaaaaaaaaaa");

  // bluetooth.println ("MMA8452Q Testcode!");
Verzögerung (200);
Wire.begin ();
Verzögerung (100);
Serial .println ("lalalalalalalalalssssss");

accel.init();
Serial .println ("lalalal");
// Verzögerung (2000);
bluetooth.begin (9600); // Der Bluetooth Mate ist standardmäßig auf 115200 bps eingestellt
PinMode (Start_But, INPUT);
PinMode (LED_start, AUSGANG);
PinMode (LED_init, AUSGANG);
digitalWrite (LED_init, 1);
digitalWrite (LED_start, 0);
analogReference (INTERNAL); // Stellen Sie die analoge Ausgangsreferenz auf 3,3 V anstelle von 5 V ein, da die Ausgangsspannung der Sensoren klein ist
 
// Die mehreren Messwerte im Leerlauf nehmen, um zu entscheiden, welcher Beziehung zwischen Spannung und Kraft der Sensor folgt 
 x[0]=analogRead(1);
  Verzögerung (100);
    x[1]=analogRead(1);
  Verzögerung (100);
  Summe+=x[1];
    x[2]=analogRead(1);
    Verzögerung (100);
  Summe+=x[2];
    x[3]=analogRead(1);
  Verzögerung (100);
  Summe+=x[3];
    x[4]=analogRead(1);
   Verzögerung (100);
  Summe+=x[4];
    x[5]=analogRead(1);
  Verzögerung (100);
  Summe+=x[5];
    x[6]=analogRead(1);
   Verzögerung (100);
  Summe+=x[6];
    x[7]=analogRead(1);
  Verzögerung (100);
  Summe+=x[7]; 
  x[8]=analogRead(1);
  Verzögerung (100);
  Summe+=x[8];
    x[9]=analogRead(1);
  Verzögerung (100);
  Summe+=x[9];
    x[10]=analogRead(1);
  Verzögerung (100);
  Summe+=x[10];
begin_val1=sum/10;
y[0]=analogRead(0);
  Verzögerung (100);
    y[1]=analogRead(0);
  Verzögerung (100);
  summe1+=y[1];
    y[2]=analogRead(0);
    Verzögerung (100);
  summe1+=y[2];
    y[3]=analogRead(0);
  Verzögerung (100);
  summe1+=x[3];
    y[4]=analogRead(0);
   Verzögerung (100);
  summe1+=x[4];
    y[5]=analogRead(0);
  Verzögerung (100);
  summe1+=x[5];
    y[6]=analogRead(0);
   Verzögerung (100);
  summe1+=x[6];
    y[7]=analogRead(0);
  Verzögerung (100);
  summe1+=x[7]; 
  y[8]=analogRead(0);
  Verzögerung (100);
  summe1+=x[8];
    y[9]=analogRead(0);
  Verzögerung (100);
  summe1+=x[9];
    y[10]=analogRead(0);
  Verzögerung (100);
  summe1+=x[10];
begin_val2=sum1/10;

 digitalWrite (LED_init, 0);
  digitalWrite (LED_start, 1);
Serial .println ("lalalalalalalalal");
  
}

leere Schleife ()
{
  während (1)
  {
  Serial .println ("oi");
   accel.read();
   Serial .println ("aa");
//  
 int xAcceleration = accel.cx*100;
 int yAcceleration = accel.cy*100;
int gesamt =xBeschleunigung+yBeschleunigung;
Serial .print ("ACC");
Serial .println (gesamt);
//bluetooth.print("ACCB");
//bluetooth.println (gesamt);
// Verzögerung (15);

   int start_ref1=(analogRead(1));
  int start_ref2=(analogRead(0));
     force_value1=(start_ref1-begin_val1)/25;
 if(force_value1<=0)
   {
     force_value1=0.0;
   }
   if(force_value1>=25)
   {
     force_value1=force_value1*0.8;
   }
   force_value2=(start_ref2-begin_val2)/5;
    if(force_value2<=0)
   {
     force_value2=0.0;
   }
  if(force_value2>=25)
   {
     force_value2=force_value2*0.8;
   }
force_sum=(force_value1+force_value2)*0.8;

dtostrf(force_sum,3,2,value);
Zeichenfolge str(Wert);
str="N"+str;
Verzögerung (20);
//Serial.print("force");
//Serial.println(str);
bluetooth.print("FORCEB");
 bluetooth.println(str);
 Verzögerung (500);





  } 

}

Das Problem ist ein fehlendes Semikolon in Zeile 42
Könnten Sie bitte Ihre Frage bearbeiten und den von Ihnen verwendeten Code hinzufügen? Ohne sie wird es unmöglich sein zu wissen, was das Problem ist.
Hallo, danke für die Antwort! Der Code wurde hinzugefügt! kann jemand das Problem finden?

Antworten (1)

Es hört sich so an, als ob Sie einen Fehler in Ihrer Firmware (Programm) haben. Was ich meine ist, dass Sie das "Senden Sie alles an das Bluetooth-Modul" einmal durchlaufen und dann nicht noch einmal.

In deinem Programm sollte es ungefähr so ​​aussehen:

while(1) // Forever and ever since 1 won't change. 
{

Read whatever from accelorometer();
return xy;

Transmit to bluetooth(xy);

}
Hallo Bummi, danke für deine Antwort! Ich habe den Code hochgeladen, können Sie mir freundlicherweise helfen, ihn noch einmal zu überprüfen? Vielen Dank!
An Bluetooth (xy) übertragen; wird nach der Rückgabe niemals ausgeführt.