проблема передачи данных с последовательного устройства на Bluetooth на Arduino

Я использую акселерометр, который использует последовательную связь на Arduino (UART), я хочу передать данные на модуль Bluetooth (blusmirf gold) с помощью I2C и, наконец, прочитать его из моего приложения для Android.

Я могу определить правильные показания акселерометра, я также могу передавать данные через Bluetooth. Однако, когда я соединяю эти две вещи вместе, они передаются только один раз и после этого перестают передавать что-либо.

Кто-нибудь может помочь мне с этим? Заранее спасибо!

/* Аппаратное подключение:
  Arduino --------------- MMA8452Q Прорыв
    3,3 В --------------- 3,3 В
    ЗАЗЕМЛЕНИЕ --------------- ЗАЗЕМЛЕНИЕ
  СДА (А4) --/330 Ом/-- СДА
  SCL (A5) --\/330 Ом\/-- SCL
*/
#include <Wire.h> // Должна быть включена библиотека Wire для I2C
#include <SFE_MMA8452Q.h> // Включает библиотеку SFE_MMA8452Q
#include <Событие.h>
#include <Таймер.h>
#include<stdlib.h>

#include <SoftwareSerial.h>  
инт bluetoothTx = 16; // контакт TX-O сопряжения bluetooth, Arduino A2,16
инт bluetoothRx = 17; // Контакт RX-I сопряжения bluetooth, Arduino A3,17
ускорение MMA8452Q;
Программное обеспечение Serial bluetooth (bluetoothTx, bluetoothRx); // для связи между ATMEGA 328 и BlueSMiRF Gold

интервал Start_But =4;
интервал LED_init =7;
интервал LED_start =8;

интервал х[20];
интервал у[20];
целая сумма=0;
целая сумма1=0;
число с плавающей запятой начало_значение1;
число с плавающей запятой начало_значение2;
тип int;
интервал start_ref1;
интервал start_ref2;
плавающая начальная_точка ;
плавающая сила_сумма;
число с плавающей запятой force_value1 ;
плавающая сила_значение2;
плавающее значение_напряжения ;
символьное значение[10];
значение символа2[10];

// считываем показания датчика, преобразуем их в значение силы и передаем  


пустая установка ()
{
задержка(300);
   Серийный номер .begin(9600); // Запуск последовательного монитора на скорости 57600 бит/с

Серийный .println("лалалалалалалалааааааааааааааааааа");

  // bluetooth.println("Тестовый код MMA8452Q!");
задержка(200);
Провод.начать();
задержка(100);
Серийный номер .println("лалалалалалаласссссссс");

ускорение.инит();
Серийный .println ("лалалал");
// задержка (2000);
bluetooth.начать (9600); // Bluetooth Mate по умолчанию использует скорость 115200 бит/с
pinMode(Start_But,INPUT);
pinMode (LED_start, ВЫХОД);
pinMode (LED_init, ВЫХОД);
цифровая запись (LED_init, 1);
цифровая запись (LED_start, 0);
AnalogReference(INTERNAL);//устанавливаем опорное значение аналогового выхода на 3,3 В вместо 5 В, так как выходное напряжение от датчиков мало
 
//Снятие нескольких показаний без нагрузки, чтобы решить, какому соотношению между напряжением и усилием следует датчик 
 х [0] = аналоговое чтение (1);
  задержка(100);
    х [1] = аналоговое чтение (1);
  задержка(100);
  сумма+=х[1];
    х[2]=аналоговое чтение(1);
    задержка(100);
  сумма+=х[2];
    х[3]=аналоговое чтение(1);
  задержка(100);
  сумма+=х[3];
    х[4]=аналоговое чтение(1);
   задержка(100);
  сумма+=х[4];
    х[5]=аналоговое чтение(1);
  задержка(100);
  сумма+=х[5];
    х[6]=аналоговое чтение(1);
   задержка(100);
  сумма+=х[6];
    х[7]=аналоговое чтение(1);
  задержка(100);
  сумма+=х[7]; 
  х[8]=аналоговое чтение(1);
  задержка(100);
  сумма+=х[8];
    х[9]=аналоговое чтение(1);
  задержка(100);
  сумма+=х[9];
    х[10]=аналоговое чтение(1);
  задержка(100);
  сумма+=х[10];
begin_val1=сумма/10;
у [0] = аналоговое чтение (0);
  задержка(100);
    у [1] = аналоговое чтение (0);
  задержка(100);
  сумма1+=у[1];
    у [2] = аналоговое чтение (0);
    задержка(100);
  сумма1+=у[2];
    у [3] = аналоговое чтение (0);
  задержка(100);
  сумма1+=х[3];
    у [4] = аналоговое чтение (0);
   задержка(100);
  сумма1+=х[4];
    у [5] = аналоговое чтение (0);
  задержка(100);
  сумма1+=х[5];
    y[6]=аналоговое чтение(0);
   задержка(100);
  сумма1+=х[6];
    у [7] = аналоговое чтение (0);
  задержка(100);
  сумма1+=х[7]; 
  у [8] = аналоговое чтение (0);
  задержка(100);
  сумма1+=х[8];
    у [9] = аналоговое чтение (0);
  задержка(100);
  сумма1+=х[9];
    у [10] = аналоговое чтение (0);
  задержка(100);
  сумма1+=х[10];
begin_val2=сумма1/10;

 цифровая запись (LED_init, 0);
  цифровая запись (LED_start, 1);
Серийный .println("лалалалалалал");
  
}

пустая петля ()
{
  пока(1)
  {
  Серийный .println ("oi");
   ускорение.чтение();
   Серийный .println ("аа");
//  
 int xAcceleration = accel.cx*100;
 int yAcceleration = ускорение.cy*100;
общее количество =xAcceleration+yAcceleration;
Серийный .print("ACC");
Серийный .println (всего);
//Bluetooth.print("ACCB");
//Bluetooth.println(всего);
// задержка (15);

   int start_ref1 = (аналоговое чтение (1));
  int start_ref2 = (аналоговое чтение (0));
     force_value1=(start_ref1-begin_val1)/25;
 если(force_value1<=0)
   {
     сила_значение1=0,0;
   }
   если (force_value1>=25)
   {
     сила_значение1=сила_значение1*0,8;
   }
   force_value2=(start_ref2-begin_val2)/5;
    если (force_value2<=0)
   {
     сила_значение2=0,0;
   }
  если(force_value2>=25)
   {
     сила_значение2=сила_значение2*0,8;
   }
force_sum=(force_value1+force_value2)*0,8;

dtostrf(force_sum,3,2,значение);
Строка ул(значение);
стр = "N" + стр;
задержка(20);
//Серийный.принт("сила");
//Serial.println(str);
bluetooth.print("FORCEB");
 bluetooth.println (ул);
 задержка(500);





  } 

}

Проблема в отсутствии точки с запятой в строке 42.
Не могли бы вы отредактировать свой вопрос и добавить код, который вы используете, пожалуйста? Без него невозможно понять, в чем проблема.
Привет, спасибо за ответ! код добавлен! может кто нашел проблему?

Ответы (1)

Похоже у вас ошибка в прошивке (программе). Я имею в виду, что вы запускаете «Отправить что угодно в модуль Bluetooth» один раз, а затем не снова.

В вашей программе это должно выглядеть примерно так:

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

Read whatever from accelorometer();
return xy;

Transmit to bluetooth(xy);

}
Привет Бамми, Спасибо за ответ! Я загрузил код, не могли бы вы помочь мне проверить еще раз? Спасибо!
Передать на bluetooth(xy); никогда не будет выполняться после возврата.