problema de transmitir datos desde un dispositivo serie a bluetooth en Arduino

Estoy usando un acelerómetro que usa comunicación serial en Arduino (UART), deseo transmitir los datos a un módulo bluetooth (blusmirf gold) usando I2C y finalmente leerlos desde mi aplicación de Android.

Puedo detectar la lectura correcta del acelerómetro, también puedo transmitir los datos a través de bluetooth. Sin embargo, cuando pongo estas dos cosas juntas, solo transmite una vez y deja de transmitir cualquier cosa después.

¿Hay alguien que pueda ayudarme con esto? ¡Gracias de antemano!

/*Conexión de hardware:
  Arduino --------------- ruptura MMA8452Q
    3,3 V --------------- 3,3 V
    TIERRA --------------- TIERRA
  SDA (A4) --\/330 ohmios\/-- SDA
  SCL (A5) --\/330 ohmios\/-- SCL
*/
#include <Wire.h> // Debe incluir la biblioteca Wire para I2C
#include <SFE_MMA8452Q.h> // Incluye la biblioteca SFE_MMA8452Q
#include <Evento.h>
#include <Temporizador.h>
#include<stdlib.h>

#include <SoftwareSerial.h>  
int bluetoothTx = 16; // pin TX-O de bluetooth mate, Arduino A2,16
int bluetoothRx = 17; // Pin RX-I de bluetooth mate, Arduino A3,17
aceleración MMA8452Q;
SoftwareSerial bluetooth (bluetoothTx, bluetoothRx); // para comunicación entre ATMEGA 328 y BlueSMiRF Gold

int Inicio_Pero =4;
int LED_init =7;
int LED_inicio =8;

intx[20];
int y[20];
int suma=0;
entero suma1=0;
flotar comenzar_val1;
flotar comenzar_val2;
tipo int;
int inicio_ref1;
int inicio_ref2;
punto_inicio flotante;
flotar force_sum;
flotar force_value1 ;
flotar force_value2;
valor_voltaje flotante;
valor de carácter[10];
valor de carácter2[10];

// tomar la lectura del sensor y convertirla al valor de fuerza y ​​transmitir  

configuración 
vacía ()
{
retraso (300);
   Serie .begin(9600); // Comenzar el monitor serial a 57600bps

Serial .println("lalalalalalalalalaaaaaaaaaaaaaa");

  // bluetooth.println("¡Código de prueba MMA8452Q!");
retraso (200);
Alambre.begin();
retraso (100);
Serial .println("lalalalalalalaalssssssss");

accel.init();
Serial .println("lalalaal");
//retraso(2000);
bluetooth.begin(9600); // El Bluetooth Mate por defecto es de 115200bps
pinMode(Inicio_Pero,ENTRADA);
pinMode(LED_inicio, SALIDA);
pinMode(LED_init, SALIDA);
escritura digital (LED_init, 1);
escritura digital (LED_inicio, 0);
analogReference(INTERNAL);//establece la referencia de salida analógica en 3,3 V en lugar de 5 V, ya que el voltaje de salida de los sensores es pequeño
 
//Tomar varias lecturas sin carga para decidir qué relación entre el voltaje y la fuerza está siguiendo el sensor 
 x[0]=lectura analógica(1);
  retraso (100);
    x[1]=lectura analógica(1);
  retraso (100);
  suma+=x[1];
    x[2]=lectura analógica(1);
    retraso (100);
  suma+=x[2];
    x[3]=lectura analógica(1);
  retraso (100);
  suma+=x[3];
    x[4]=lectura analógica(1);
   retraso (100);
  suma+=x[4];
    x[5]=lectura analógica(1);
  retraso (100);
  suma+=x[5];
    x[6]=lectura analógica(1);
   retraso (100);
  suma+=x[6];
    x[7]=lectura analógica(1);
  retraso (100);
  suma+=x[7]; 
  x[8]=lectura analógica(1);
  retraso (100);
  suma+=x[8];
    x[9]=lectura analógica(1);
  retraso (100);
  suma+=x[9];
    x[10]=lectura analógica(1);
  retraso (100);
  suma+=x[10];
comienzo_val1=suma/10;
y[0]=lectura analógica(0);
  retraso (100);
    y[1]=lectura analógica(0);
  retraso (100);
  suma1+=y[1];
    y[2]=lectura analógica(0);
    retraso (100);
  suma1+=y[2];
    y[3]=lectura analógica(0);
  retraso (100);
  suma1+=x[3];
    y[4]=lectura analógica(0);
   retraso (100);
  suma1+=x[4];
    y[5]=lectura analógica(0);
  retraso (100);
  suma1+=x[5];
    y[6]=lectura analógica(0);
   retraso (100);
  suma1+=x[6];
    y[7]=lectura analógica(0);
  retraso (100);
  suma1+=x[7]; 
  y[8]=lectura analógica(0);
  retraso (100);
  suma1+=x[8];
    y[9]=lectura analógica(0);
  retraso (100);
  suma1+=x[9];
    y[10]=lectura analógica(0);
  retraso (100);
  suma1+=x[10];
comenzar_val2=suma1/10;

 escritura digital (LED_init, 0);
  escritura digital (LED_inicio, 1);
Serial .println("lalalalalalalalala");
  
}
bucle 
vacío ()
{
  mientras(1)
  {
  Serial .println ("oi");
   accel.read();
   Serie .println("aa");
//  
 int xAceleración = acel.cx*100;
 int yAceleración = acel.cy*100;
int total =xAceleración+yAceleración;
Serial .print("ACC");
Serie .println(total);
//bluetooth.imprimir("ACCB");
//bluetooth.println(total);
//retraso(15);

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

dtostrf(force_sum,3,2,valor);
Cadena str(valor);
cadena="N"+cadena;
retraso (20);
//Serial.print("forzar");
//Serial.println(str);
bluetooth.print("FORCEB");
 bluetooth.println(str);
 retraso (500);





  } 

}

El problema es que falta un punto y coma en la línea 42
¿Podría editar su pregunta y agregar el código que está usando, por favor? Sin él, será imposible saber cuál es el problema.
¡Hola, gracias por la respuesta! el código ha sido agregado! alguien puede encontrar el problema?

Respuestas (1)

Parece que tiene un error en su firmware (programa). Lo que quiero decir es que ejecutas "Enviar lo que sea al módulo bluetooth" una vez y luego no otra vez.

Debería verse algo como esto en su programa:

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

Read whatever from accelorometer();
return xy;

Transmit to bluetooth(xy);

}
Hola bummi, gracias por tu respuesta! He subido el código, ¿pueden ayudarme a comprobarlo de nuevo? ¡Muchas gracias!
Transmitir a bluetooth (xy); nunca se ejecutará después de la devolución.